func NewView(name, description string, keys []tag.Key, measure Measure, agg Aggregation, window Window) (*View, error) {
	if err := checkViewName(name); err != nil {
		return nil, err
	}
	return &View{
		name:        name,
		description: description,
		tagKeys:     keys,
		m:           measure,
		collector:   &collector{make(map[string]aggregator), agg, window},
	}, nil
}
NewView creates a new view with the given name and description.
View names need to be unique globally in the entire system.

Data collection will only filter measurements recorded by the given keys.
Collected data will be processed by the given aggregation algorithm for
the given time window.

Views need to be subscribed toin order to retrieve collection data.

Once the view is no longer required, the view can be unregistered.
package stats
import (
	"bytes"
	"fmt"
	"reflect"
	"sync/atomic"
	"time"
	"go.opencensus.io/tag"
)
type View struct {
	name        string  
	description string
	tagKeys []tag.Key
	m Measure
	subscribed uint32  
	collector *collector
}