public async Task ProcessAsync(IList <MetricData> datas)
        {
            Ensure.NotNull(datas, nameof(datas));

            if (datas.Count == 0)
            {
                return;
            }

            var points = new List <SeriesPoint>();

            foreach (var data in datas)
            {
                var alignedTimestamp = AlignToGranularity(data.Timestamp ?? new Timestamp(DateTime.UtcNow));

                foreach (var seriesName in Aggregates.GetSeriesPermutations(data))
                {
                    var series = await seriesService.GetAsync(seriesName);

                    points.Add(new SeriesPoint(series.Id, alignedTimestamp, (double)data.Properties[0].Value));
                }
            }

            await pointStore.IncrementAsync(points);
        }
        public async Task ProcessAsync(MetricData data)
        {
            // TODO: Get the metric & normalize the value if its not the base unit...

            var alignedTimestamp = AlignToGranularity(data.Timestamp ?? new Timestamp(DateTime.UtcNow));

            var points = new List <SeriesPoint>();

            foreach (var name in Aggregates.GetSeriesPermutations(data))
            {
                var series = await seriesService.GetAsync(name);

                points.Add(new SeriesPoint(series.Id, alignedTimestamp, (double)data.Properties[0].Value));
            }

            await pointStore.IncrementAsync(points);
        }