示例#1
0
        public async Task <IDictionary <string, double> > GetDimensionMetricsCountCoreAsync(string metricsName, TimeSpan backTime, string dimension)
        {
            IDictionary <string, double> result = new Dictionary <string, double>();
            var connectionInfo   = new ConnectionInfo(_certificate, _mdmEnvironment);
            var metricReader     = new MetricReader(connectionInfo);
            var metricId         = GenMetricId(metricsName);
            var dimensionFilters = new List <DimensionFilter>
            {
                DimensionFilter.CreateIncludeFilter(dimension)
            };

            try
            {
                var now     = DateTime.UtcNow;
                var results = await metricReader.GetTimeSeriesAsync(
                    metricId,
                    dimensionFilters,
                    now - backTime,
                    now,
                    new[] { SamplingType.Count },
                    new SelectionClauseV3(new PropertyDefinition(PropertyAggregationType.Sum, SamplingType.Count), 100_000, OrderBy.Descending),
                    outputDimensionNames : new List <string> {
                    dimension
                }
                    );

                return(results.Results.ToDictionary(r => r.DimensionList.First().Value, r => r.EvaluatedResult));
            }
            catch (Exception ex)
            {
                Console.WriteLine("Failed to get metrics data from Geneva", ex);
                return(null);
            }
        }
示例#2
0
        /// <summary>
        /// Gets the known dimension combinations that match the query criteria.  In this example, we are checking for available memory
        /// on all our roles and datacenters.
        /// </summary>
        public static void GetFilteredDimensionValues()
        {
            // Replace 31280E2F2D2220808315C212DF8062A295B28325 with your cert thumbprint,
            // install it to the "Personal\Certificates" folder in the "Local Computer" certificate store,
            // and grant the permission of reading the private key to the service/application using the MDM consumption APIs.
            string testCertificateThumbprint = "31280E2F2D2220808315C212DF8062A295B28325";

            var connectionInfo = new ConnectionInfo(testCertificateThumbprint, StoreLocation.LocalMachine, MdmEnvironment.Int);

            var reader = new MetricReader(connectionInfo);

            var id = new MetricIdentifier("MetricTeamInternalMetrics", "PlatformMetrics", "\\Memory\\Available MBytes");

            var dimensionFilters = new DimensionFilter[] { "__Role", "Datacenter" };

            IEnumerable <IQueryResult> results = reader.GetFilteredDimensionValuesAsync(
                id,
                dimensionFilters,
                DateTime.UtcNow.AddMinutes(-60),
                DateTime.UtcNow,
                SamplingType.Sum,
                Reducer.Average,
                new QueryFilter(Operator.GreaterThan, 5000),
                false,
                new SelectionClause(SelectionType.TopValues, 10, OrderBy.Descending)
                ).Result;

            foreach (var series in results)
            {
                IEnumerable <string> dimensions = series.DimensionList.Select(x => string.Format("[{0}, {1}]", x.Key, x.Value));
                Console.WriteLine("Dimensions: {0}, Evaluated Result: {1:N0}", string.Join(", ", dimensions), series.EvaluatedResult);
            }

            Console.WriteLine("############################ END OF GetFilteredDimensionValues ##############################");
        }
示例#3
0
        /// <summary>
        /// Gets the known dimension combinations that match the query criteria and the associated time series.
        /// In this example, we are checking the sum and count for available memory on all our roles and datacenters.
        /// </summary>
        public static void GetFilteredDimensionValuesV3()
        {
            var connectionInfo = new ConnectionInfo(MdmEnvironment.Int);

            var reader = new MetricReader(connectionInfo);

            var id = new MetricIdentifier("MetricTeamInternalMetrics", "PlatformMetrics", "\\Memory\\Available MBytes");

            var dimensionFilters = new DimensionFilter[] { "__Role", "Datacenter" };

            IQueryResultListV3 results = reader.GetFilteredDimensionValuesAsyncV3(
                id,
                dimensionFilters,
                DateTime.UtcNow.AddMinutes(-10),
                DateTime.UtcNow,
                new[] { SamplingType.Sum, SamplingType.Count },
                new SelectionClauseV3(new PropertyDefinition(PropertyAggregationType.Average, SamplingType.Sum), 10, OrderBy.Descending)).Result;

            foreach (var series in results.Results)
            {
                IEnumerable <string> dimensions = series.DimensionList.Select(x => string.Format("[{0}, {1}]", x.Key, x.Value));
                var sumSeries   = $"[{string.Join(",", series.GetTimeSeriesValues(SamplingType.Sum))}]";
                var countSeries = $"[{string.Join(",", series.GetTimeSeriesValues(SamplingType.Count))}]";
                Console.WriteLine("Dimensions: {0}, \n\tSum: {1}, \n\tCount: {2}.", string.Join(", ", dimensions), sumSeries, countSeries);
            }

            Console.WriteLine("############################ END OF GetFilteredDimensionValues ##############################");
        }
示例#4
0
        public static List <LogicalModel.Dimension> ToLogicalDimensions(DimensionFilter item)
        {
            var toitem        = new List <LogicalModel.Dimension>();
            var dimensionitem = item.Dimension;

            if (item is ExplicitDimensionFilter)
            {
                var citem = item as ExplicitDimensionFilter;
                foreach (var member in citem.Members)
                {
                    var dimension = new LogicalModel.Dimension();
                    dimension.DimensionItem = dimensionitem.QName.Content;
                    dimension.Domain        = member.QName.Domain;
                    dimension.DomainMember  = member.QName.Value;
                    toitem.Add(dimension);
                }
            }
            if (item is TypedDimensionFilter)
            {
                var dimension = new LogicalModel.Dimension();
                dimension.DimensionItem = dimensionitem.QName.Content;
                dimension.IsTyped       = true;
                toitem.Add(dimension);
            }
            return(toitem);
        }
示例#5
0
    public void Init(DimensionManager manager, DimensionFilter filter)
    {
        Manager = manager;
        Filter  = filter;

        Text.text = filter.Attribute;
    }
示例#6
0
    public void AddDimension()
    {
        string attribute = Dropdown.options[Dropdown.value].text;

        DimensionFilter filter = Filters.Where(x => x.Attribute == attribute).FirstOrDefault();

        Instantiate(DimensionObj, transform)?.Init(this, filter);
    }
示例#7
0
        public static void CloudWatchMetricsTest()
        {
            var             logGroupName    = "LogGroupName";
            DimensionFilter dimensionFilter = new DimensionFilter()
            {
                Name = logGroupName
            };
            var dimensionFilterList = new List <DimensionFilter>();

            dimensionFilterList.Add(dimensionFilter);

            var dimension = new Dimension
            {
                Name  = "UniquePages",
                Value = "URLs"
            };

            using (var cw = new AmazonCloudWatchClient(RegionEndpoint.USWest2))
            {
                var listMetricsResponse = cw.ListMetrics(new ListMetricsRequest
                {
                    Dimensions = dimensionFilterList,
                    MetricName = "IncomingLogEvents",
                    Namespace  = "AWS/Logs"
                });

                Console.WriteLine(listMetricsResponse.Metrics);

                cw.PutMetricData(new PutMetricDataRequest
                {
                    MetricData = new List <MetricDatum> {
                        new MetricDatum
                        {
                            MetricName = "PagesVisited",
                            Dimensions = new List <Dimension> {
                                dimension
                            },
                            Unit  = "None",
                            Value = 1.0
                        }
                    },
                    Namespace = "SITE/TRAFFIC"
                });

                var describeMetricsResponse = cw.DescribeAlarmsForMetric(new DescribeAlarmsForMetricRequest
                {
                    MetricName = "PagesVisited",
                    Dimensions = new List <Dimension>()
                    {
                        dimension
                    },
                    Namespace = "SITE/TRAFFIC"
                });

                Console.WriteLine(describeMetricsResponse.MetricAlarms);
            }
        }
示例#8
0
        /// <summary>
        /// Enums the popup.
        /// </summary>
        /// <param name="label">Label.</param>
        /// <param name="enumArray">Enum array.</param>
        /// <param name="selected">Selected.</param>
        private bool EnumPopup(string label, string[] enumArray, DimensionFilter selected)
        {
            string oldSelected = selected.Attribute;

            if (enumArray.Length > 0)
            {
                selected.Attribute = enumArray[EditorGUILayout.Popup(label, enumIndexOf(enumArray, selected.Attribute), enumArray)];
            }

            return(selected.Attribute != oldSelected);
        }
示例#9
0
        public static void CWListMetrics()
        {
            #region CWListMetrics
            var client = new AmazonCloudWatchClient();

            var filter = new DimensionFilter
            {
                Name  = "InstanceType",
                Value = "t1.micro"
            };

            var request = new ListMetricsRequest
            {
                Dimensions = new List <DimensionFilter>()
                {
                    filter
                },
                MetricName = "CPUUtilization",
                Namespace  = "AWS/EC2"
            };

            var response = new ListMetricsResponse();

            do
            {
                response = client.ListMetrics(request);

                if (response.Metrics.Count > 0)
                {
                    foreach (var metric in response.Metrics)
                    {
                        Console.WriteLine(metric.MetricName +
                                          " (" + metric.Namespace + ")");

                        foreach (var dimension in metric.Dimensions)
                        {
                            Console.WriteLine("  " + dimension.Name + ": "
                                              + dimension.Value);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No metrics found.");
                }

                request.NextToken = response.NextToken;
            } while (!string.IsNullOrEmpty(response.NextToken));
            #endregion

            Console.ReadLine();
        }
        public void DeSerialize(string serializedObjectPath, CreationConfiguration cf)
        {
            SerializableCreationConfiguration scc = JsonUtility.FromJson <SerializableCreationConfiguration>(File.ReadAllText(serializedObjectPath));

            cf.VisualisationType = (AbstractVisualisation.VisualisationTypes)System.Enum.Parse(typeof(AbstractVisualisation.VisualisationTypes), scc.VisualisationType);

            //rebuild the parallel coordinates dimensions filtering
            string[] attributesPCP = scc.parallelCoordinatesDimensionsAttributes;
            float[]  minFiltersPCP = scc.parallelCoordinatesDimensionsMinFilter;
            float[]  maxFiltersPCP = scc.parallelCoordinatesDimensionsMaxFilter;
            float[]  minScalesPCP  = scc.parallelCoordinatesDimensionsMinScale;
            float[]  maxScalesPCP  = scc.parallelCoordinatesDimensionsMaxScale;

            DimensionFilter[] parallelCoordinatesDimensions = new DimensionFilter[attributesPCP.Length];

            for (int i = 0; i < parallelCoordinatesDimensions.Length; i++)
            {
                DimensionFilter df = new DimensionFilter();
                df.Attribute = attributesPCP[i];
                df.minFilter = minFiltersPCP[i];
                df.maxFilter = maxFiltersPCP[i];
                df.minScale  = minScalesPCP[i];
                df.maxScale  = maxScalesPCP[i];

                parallelCoordinatesDimensions[i] = df;
            }

            cf.parallelCoordinatesDimensions = parallelCoordinatesDimensions;

            cf.Geometry = scc.Geometry;
            cf.Axies    = new Dictionary <CreationConfiguration.Axis, string>();
            for (int i = 0; i < scc.AxiesKeys.Length; i++)
            {
                if (!cf.Axies.ContainsKey(scc.AxiesKeys[i]))
                {
                    cf.Axies.Add(scc.AxiesKeys[i], scc.AxiesValues[i]);
                }
            }
            cf.ColourDimension  = scc.ColourDimension;
            cf.SizeDimension    = scc.SizeDimension;
            cf.LinkingDimension = scc.LinkingDimension;
            cf.colourKeys       = scc.colourKeys;
            cf.colour           = scc.colour;
            cf.Size             = scc.Size;
            cf.MinSize          = scc.MinSize;
            cf.MaxSize          = scc.MaxSize;

            cf.VisualisationWidth  = scc.VisualisationWidth;
            cf.VisualisationHeight = scc.VisualisationHeight;
            cf.VisualisationDepth  = scc.VisualisationDepth;
        }
示例#11
0
        public static async Task Main()
        {
            IAmazonCloudWatch cwClient = new AmazonCloudWatchClient();

            var filter = new DimensionFilter
            {
                Name  = "InstanceType",
                Value = "t1.micro",
            };
            string metricName    = "CPUUtilization";
            string namespaceName = "AWS/EC2";

            await ListMetricsAsync(cwClient, filter, metricName, namespaceName);
        }
        // ******************************************************
        // COMMON METHODS THAT VISUALISATIONS USE
        // ******************************************************

        /// <summary>
        /// Binds metadata to an axis component
        /// </summary>
        /// <param name="axis"></param>
        /// <param name="dim"></param>
        protected void BindMinMaxAxisValues(Axis axis, DimensionFilter dim)
        {
            object minvalue = visualisationReference.dataSource.getOriginalValue(dim.minFilter, dim.Attribute);
            object maxvalue = visualisationReference.dataSource.getOriginalValue(dim.maxFilter, dim.Attribute);

            object minScaledvalue = visualisationReference.dataSource.getOriginalValue(dim.minScale, dim.Attribute);
            object maxScaledvalue = visualisationReference.dataSource.getOriginalValue(dim.maxScale, dim.Attribute);

            axis.AttributeFilter = dim;
            axis.UpdateLabelAttribute(dim.Attribute);

            axis.SetMinNormalizer(dim.minScale);
            axis.SetMaxNormalizer(dim.maxScale);
        }
示例#13
0
        /// <summary>
        /// Gets the known time series definitions.
        /// </summary>
        public static void GetKnownTimeSeriesDefinitions()
        {
            // Replace 31280E2F2D2220808315C212DF8062A295B28325 with your cert thumbprint,
            // install it to the "Personal\Certificates" folder in the "Local Computer" certificate store,
            // and grant the permission of reading the private key to the service/application using the MDM consumption APIs.
            string testCertificateThumbprint = "31280E2F2D2220808315C212DF8062A295B28325";

            var connectionInfo = new ConnectionInfo(testCertificateThumbprint, StoreLocation.LocalMachine, TimeSpan.FromSeconds(300), MdmEnvironment.Int);

            var reader = new MetricReader(connectionInfo);

            string monitoringAccount          = "MetricTeamInternalMetrics";
            IReadOnlyList <string> namespaces = reader.GetNamespacesAsync(monitoringAccount).Result;

            string metricNamespace             = "PlatformMetrics";
            IReadOnlyList <string> metricNames = reader.GetMetricNamesAsync(monitoringAccount, metricNamespace).Result;

            string metric = "\\Memory\\Available MBytes";
            var    id     = new MetricIdentifier(monitoringAccount, metricNamespace, metric);

            var dimensions = reader.GetDimensionNamesAsync(id).Result;

            Console.WriteLine("Dimensions are: {0}", string.Join(", ", dimensions));

            var preaggregates = reader.GetPreAggregateConfigurationsAsync(id).Result;

            foreach (var preAggregateConfiguration in preaggregates)
            {
                Console.WriteLine("Pre-aggregate: {0}", JsonConvert.SerializeObject(preAggregateConfiguration));
            }

            var knownTimeSeriesDefinitions =
                reader.GetKnownTimeSeriesDefinitionsAsync(id, "__Role", DimensionFilter.CreateExcludeFilter("Datacenter", "eastus2")).Result;

            var roleIndex = knownTimeSeriesDefinitions.GetIndexInDimensionCombination("__Role");

            Console.WriteLine("The index of the '__Role' dimension is {0}.", roleIndex);

            foreach (var value in knownTimeSeriesDefinitions)
            {
                Console.WriteLine("Known time series definition: {0}", JsonConvert.SerializeObject(value.DimensionCombination));
            }

            Console.WriteLine("############################ END OF GetKnownTimeSeriesDefinitions ##############################");
        }
    private void Update()
    {
        if (Application.IsPlaying(gameObject))
        {
            Destroy(this);
        }
        if (partnerBlock)
        {
            GameObject partnerPartner = partnerBlock.GetComponent <EditorInfo>().partnerBlock;
            if (!partnerPartner) //assign partners.
            {
                partnerPartner = gameObject;
            }
            DimensionFilter dimensionFilter = GetComponent <DimensionFilter>();
            if (dimensionFilter)
            {
                if (dimensionFilter.dimension != lastDimension) //keep the partners in opposite dimensions
                {
                    partnerBlock.GetComponent <DimensionFilter>().dimension = lastDimension;
                }
                lastDimension = dimensionFilter.dimension;
            }


            Vector2 pSize = partnerBlock.GetComponent <BoxCollider2D>().size;
            Vector2 size  = GetComponent <BoxCollider2D>().size;
            Debug.Log($"Size: {size}\n" + $"pSize: {pSize}\n" +
                      $"LastSize: {lastSize}\n");
            //Debug.Log($"pPos: {partnerBlock.transform.position}, " + $"Pos: {transform.position}\n"+
            //    $"LastPos: {lastPos}");
            if (size != lastSize) // if my size changes, adjust the size of my partner
            {
                Debug.Log("size changed");
                pSize = size;
            }
            if (transform.position != lastPos) // same for pos
            {
                Debug.Log("pos changed");
                partnerBlock.transform.position = transform.position;
            }

            lastPos  = transform.position;
            lastSize = size;
        }
    }
示例#15
0
        /// <summary>
        /// Retrieve CloudWatch metrics using the supplied filter, metrics name,
        /// and namespace.
        /// </summary>
        /// <param name="client">An initialized CloudWatch client.</param>
        /// <param name="filter">The filter to apply in retrieving metrics.</param>
        /// <param name="metricName">The metric name for which to retrieve
        /// information.</param>
        /// <param name="nameSpaceName">The name of the namespace from which
        /// to retrieve metric information.</param>
        public static async Task ListMetricsAsync(
            IAmazonCloudWatch client,
            DimensionFilter filter,
            string metricName,
            string nameSpaceName)
        {
            var request = new ListMetricsRequest
            {
                Dimensions = new List <DimensionFilter>()
                {
                    filter
                },
                MetricName = metricName,
                Namespace  = nameSpaceName,
            };

            var response = new ListMetricsResponse();

            do
            {
                response = await client.ListMetricsAsync(request);

                if (response.Metrics.Count > 0)
                {
                    foreach (var metric in response.Metrics)
                    {
                        Console.WriteLine(metric.MetricName +
                                          " (" + metric.Namespace + ")");

                        foreach (var dimension in metric.Dimensions)
                        {
                            Console.WriteLine("  " + dimension.Name + ": "
                                              + dimension.Value);
                        }
                    }
                }
                else
                {
                    Console.WriteLine("No metrics found.");
                }

                request.NextToken = response.NextToken;
            } while (!string.IsNullOrEmpty(response.NextToken));
        }
示例#16
0
    protected GameObject CreateAxis(AbstractVisualisation.PropertyType propertyType, DimensionFilter dimensionFilter, Vector3 position, Vector3 rotation, int index, CSVDataSource csvds, Visualisation vis, GameObject go)
    {
        GameObject AxisHolder;

        AxisHolder = (GameObject)Instantiate(Resources.Load("Axis"));

        AxisHolder.transform.parent        = go.transform;
        AxisHolder.name                    = propertyType.ToString();
        AxisHolder.transform.eulerAngles   = (rotation);
        AxisHolder.transform.localPosition = position;

        Axis axis = AxisHolder.GetComponent <Axis>();

        axis.SetDirection((int)propertyType);

        axis.Init(csvds, dimensionFilter, vis);
        BindMinMaxAxisValues(axis, dimensionFilter, vis);

        return(AxisHolder);
    }
 static void OnSelectionChange()
 {
     if (Selection.gameObjects.Length > 0)
     {
         selection     = Selection.gameObjects[0];
         transform     = selection.transform;
         renderer      = selection.GetComponent <SpriteRenderer>();
         collider      = selection.GetComponent <BoxCollider2D>();
         selectionInfo = selection.GetComponent <EditorInfo>();
         dfilter       = selection.GetComponent <DimensionFilter>();
         if (autoGetFromSelection)
         {
             GetFromSelection();
         }
         if (renderer)
         {
             lastSize     = renderer.size;
             lastPosition = transform.position;
         }
     }
 }
示例#18
0
        internal PreaggregateFilters(
            string monitoringAccount,
            string metricNamespace,
            string metricName,
            IEnumerable <string> preaggregateDimensionNames,
            IReadOnlyList <PreaggregateDimensionFilterValues> filterValues)
        {
            this.MonitoringAccount = monitoringAccount;
            this.MetricNamespace   = metricNamespace;
            this.MetricName        = metricName;
            var preaggregateDimensionNamesSet = new SortedSet <string>(preaggregateDimensionNames, StringComparer.OrdinalIgnoreCase);

            this.PreaggregateDimensionNames = preaggregateDimensionNamesSet;
            this.FilterValues = filterValues;

            var dimensionFilters = new List <DimensionFilter>(this.FilterValues.Count);

            foreach (PreaggregateDimensionFilterValues filter in this.FilterValues)
            {
                dimensionFilters.Add(DimensionFilter.CreateIncludeFilter(filter.FilterDimensionName, filter.FilterValues));
            }

            this.DimensionFilters = dimensionFilters;
        }
示例#19
0
        // PUBLIC
        public void CreateVisualisation(AbstractVisualisation.VisualisationTypes visualizationType)
        {
            //destroy the previous visualisations
            AbstractVisualisation[] previousVisualizations = GetComponentsInChildren<AbstractVisualisation>();

            foreach (var item in previousVisualizations)
            {
                item.destroyView();
                DestroyImmediate(item);
            }

            //destroy the previous axes
            Axis[] previousAxes = GetComponentsInChildren<Axis>();

            foreach (var item in previousAxes)
            {
                DestroyImmediate(item.gameObject);
            }

            //destroy previous key
            if(key!=null)
            DestroyImmediate(key.gameObject);

            visualisationType = visualizationType;

            switch (visualisationType)
            {
                case AbstractVisualisation.VisualisationTypes.SCATTERPLOT:
                    theVisualizationObject = gameObject.AddComponent<ScatterplotVisualisation>();// new Simple2D3DVisualisation();                    
                    theVisualizationObject.visualisationReference = this;

                    theVisualizationObject.CreateVisualisation();
                    break;
                case AbstractVisualisation.VisualisationTypes.SCATTERPLOT_MATRIX:
        
                    int dimensionCount = dataSource.DimensionCount;
                    if (dimensionCount > MAX_INIT_SCATTERPLOTMATRIX) dimensionCount = MAX_INIT_SCATTERPLOTMATRIX;

                    xScatterplotMatrixDimensions = new DimensionFilter[dimensionCount];
                    yScatterplotMatrixDimensions = new DimensionFilter[dimensionCount];

                    for (int i = 0; i < dimensionCount; i++)
                    {
                        xScatterplotMatrixDimensions[i] = new DimensionFilter { Attribute = dataSource[i].Identifier };
                        yScatterplotMatrixDimensions[i] = new DimensionFilter { Attribute = dataSource[i].Identifier };
                    }

                    theVisualizationObject = gameObject.AddComponent<ScatterplotMatrixVisualisation>();// new Simple2D3DVisualisation();                    
                    theVisualizationObject.visualisationReference = this;

                    theVisualizationObject.CreateVisualisation();
                    break;
                case AbstractVisualisation.VisualisationTypes.PARALLEL_COORDINATES:
                    parallelCoordinatesDimensions = new DimensionFilter[dataSource.DimensionCount];

                    for (int i = 0; i < dataSource.DimensionCount; i++)
                    {
                        parallelCoordinatesDimensions[i] = new DimensionFilter { Attribute = dataSource[i].Identifier };
                    }
                    theVisualizationObject = gameObject.AddComponent<ParallelCoordinatesVisualisation>();// new ParrallelCoordinates();
                    
                    theVisualizationObject.visualisationReference = this;
                    theVisualizationObject.UpdateVisualisation(AbstractVisualisation.PropertyType.DimensionChange);

                    theVisualizationObject.CreateVisualisation();


                    break;
                case AbstractVisualisation.VisualisationTypes.GRAPH_LAYOUT:
                    break;
                default:
                    break;
            }

            theVisualizationObject.UpdateVisualisation(AbstractVisualisation.PropertyType.None);

            RuntimeEditorLoadAndSaveConfiguration();

            key = (GameObject)Instantiate(Resources.Load("Key"));
            key.transform.parent = transform;
            key.transform.localPosition = new Vector3(0.15f, 1.165f, 0f);
        }
示例#20
0
    // a space time cube
    View CreateBarchart(CSVDataSource csvds, GameObject go, int count)
    {
        // header
        // Date,Time,Lat,Lon,Base
        Gradient g = new Gradient();

        GradientColorKey[] gck = new GradientColorKey[2];
        gck[0]      = new GradientColorKey(Color.blue, 0);
        gck[1]      = new GradientColorKey(Color.red, 1);
        g.colorKeys = gck;

        // create a view builder with the point topology
        ViewBuilder vb = new ViewBuilder(MeshTopology.Points, "BarCharts-" + count).
                         initialiseDataView(csvds.DataCount).
                         setDataDimension(csvds["Country"].Data, ViewBuilder.VIEW_DIMENSION.X).
                         setDataDimension(csvds["Value"].Data, ViewBuilder.VIEW_DIMENSION.Y).
                         setDataDimension(csvds["Year"].Data, ViewBuilder.VIEW_DIMENSION.Z);
        //setSize(csvds["Maximum"].Data).
        //        setSingleColor(Color.white);
        //setColors(csvds["Time"].Data.Select(x => g.Evaluate(x)).ToArray());

        // initialise the view builder wiith thhe number of data points and parent GameOBject

        //Enumerable.Repeat(1f, dataSource[0].Data.Length).ToArray()
        Material mt = IATKUtil.GetMaterialFromTopology(AbstractVisualisation.GeometryType.Bars);

        mt.SetFloat("_MinSize", 0.01f);
        mt.SetFloat("_MaxSize", 0.05f);

        View          v             = vb.updateView().apply(go, mt);
        Visualisation visualisation = new Visualisation();

        visualisation.dataSource = csvds;

        //  Visualisation

        Vector3 posx = Vector3.zero;

        posx.y = -0.05f;

        DimensionFilter xDimension = new DimensionFilter {
            Attribute = "Country"
        };
        //xDimension.minFilter;
        GameObject X_AXIS = CreateAxis(AbstractVisualisation.PropertyType.X, xDimension, posx, new Vector3(0f, 0f, 0f), 0, csvds, visualisation, go);
        Vector3    posy   = Vector3.zero;

        posy.x = -0.05f;

        DimensionFilter yDimension = new DimensionFilter {
            Attribute = "Value"
        };
        GameObject Y_AXIS = CreateAxis(AbstractVisualisation.PropertyType.Y, yDimension, posy, new Vector3(0f, 0f, 0f), 1, csvds, visualisation, go);
        Vector3    posz   = Vector3.zero;

        posz.y = -0.05f;
        posz.x = -0.05f;
        DimensionFilter zDimension = new DimensionFilter {
            Attribute = "Year"
        };
        GameObject Z_AXIS = CreateAxis(AbstractVisualisation.PropertyType.Z, zDimension, posz, new Vector3(90f, 0f, 0f), 2, csvds, visualisation, go);

        return(v);
    }