private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serializer) { reader.Read(); var count = (reader.Value as long?).GetValueOrDefault(0); reader.Read(); reader.Read(); var min = reader.Value as double?; reader.Read(); reader.Read(); var max = reader.Value as double?; reader.Read(); reader.Read(); var average = reader.Value as double?; reader.Read(); reader.Read(); var sum = reader.Value as double?; var statsMetric = new StatsAggregate() { Average = average, Count = count, Max = max, Min = min, Sum = sum }; reader.Read(); if (reader.TokenType == JsonToken.EndObject) { return(statsMetric); } var propertyName = (string)reader.Value; while (reader.TokenType != JsonToken.EndObject && propertyName.Contains(Parser.AsStringSuffix)) { reader.Read(); reader.Read(); } if (reader.TokenType == JsonToken.EndObject) { return(statsMetric); } return(GetExtendedStatsAggregate(statsMetric, reader)); }
private IAggregate GetExtendedStatsAggregate(ref JsonReader reader, StatsAggregate statsMetric, IReadOnlyDictionary <string, object> meta) { var extendedStatsMetric = new ExtendedStatsAggregate { Average = statsMetric.Average, Count = statsMetric.Count, Max = statsMetric.Max, Min = statsMetric.Min, Sum = statsMetric.Sum, Meta = statsMetric.Meta }; extendedStatsMetric.SumOfSquares = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // "variance" reader.ReadNext(); // : extendedStatsMetric.Variance = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // "std_deviation" reader.ReadNext(); // : extendedStatsMetric.StdDeviation = reader.ReadNullableDouble(); if (reader.GetCurrentJsonToken() != JsonToken.EndObject) { var bounds = new StandardDeviationBounds(); reader.ReadNext(); // , reader.ReadNext(); // "std_deviation_bounds" reader.ReadNext(); // : reader.ReadNext(); // { reader.ReadNext(); // "upper" reader.ReadNext(); // : bounds.Upper = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // "lower" reader.ReadNext(); // : bounds.Lower = reader.ReadNullableDouble(); reader.ReadNext(); // } extendedStatsMetric.StdDeviationBounds = bounds; } // read any remaining _as_string fields while (reader.GetCurrentJsonToken() != JsonToken.EndObject) { reader.ReadNextBlock(); } return(extendedStatsMetric); }
private IAggregate GetStatsAggregate(JsonReader reader, JsonSerializer serializer) { reader.Read(); var count = (reader.Value as long?).GetValueOrDefault(0); reader.Read(); reader.Read(); var min = (reader.Value as double?); reader.Read(); reader.Read(); var max = (reader.Value as double?); reader.Read(); reader.Read(); var average = (reader.Value as double?); reader.Read(); reader.Read(); var sum = (reader.Value as double?); var statsMetric = new StatsAggregate() { Average = average, Count = count, Max = max, Min = min, Sum = sum }; reader.Read(); if (reader.TokenType == JsonToken.EndObject) { return(statsMetric); } while (reader.TokenType != JsonToken.EndObject && (reader.Value as string).Contains("_as_string")) { reader.Read(); reader.Read(); } if (reader.TokenType == JsonToken.EndObject) { return(statsMetric); } return(GetExtendedStatsAggregate(statsMetric, reader)); }
private IAggregate GetExtendedStatsAggregate(StatsAggregate statsMetric, JsonReader reader) { var extendedStatsMetric = new ExtendedStatsAggregate() { Average = statsMetric.Average, Count = statsMetric.Count, Max = statsMetric.Max, Min = statsMetric.Min, Sum = statsMetric.Sum }; reader.Read(); extendedStatsMetric.SumOfSquares = (reader.Value as double?); reader.Read(); reader.Read(); extendedStatsMetric.Variance = (reader.Value as double?); reader.Read(); reader.Read(); extendedStatsMetric.StdDeviation = (reader.Value as double?); reader.Read(); string propertyName; if (reader.TokenType != JsonToken.EndObject) { var bounds = new StandardDeviationBounds(); reader.Read(); reader.Read(); propertyName = (string)reader.Value; if (propertyName == Parser.Upper) { reader.Read(); bounds.Upper = reader.Value as double?; } reader.Read(); propertyName = (string)reader.Value; if (propertyName == Parser.Lower) { reader.Read(); bounds.Lower = reader.Value as double?; } extendedStatsMetric.StdDeviationBounds = bounds; reader.Read(); reader.Read(); } propertyName = (string)reader.Value; while (reader.TokenType != JsonToken.EndObject && propertyName.Contains(Parser.AsStringSuffix)) { // std_deviation_bounds is an object, so we need to skip its properties if (propertyName.Equals(Parser.StdDeviationBoundsAsString)) { reader.Read(); reader.Read(); reader.Read(); reader.Read(); } reader.Read(); reader.Read(); } return(extendedStatsMetric); }
private IAggregate GetExtendedStatsAggregate(ref JsonReader reader, IJsonFormatterResolver formatterResolver, StatsAggregate statsMetric, IReadOnlyDictionary <string, object> meta) { var extendedStatsMetric = new ExtendedStatsAggregate { Average = statsMetric.Average, Count = statsMetric.Count, Max = statsMetric.Max, Min = statsMetric.Min, Sum = statsMetric.Sum, Meta = statsMetric.Meta }; extendedStatsMetric.SumOfSquares = reader.ReadNullableDouble(); reader.ReadNext(); // , while (reader.GetCurrentJsonToken() != JsonToken.EndObject) { var propertyName = reader.ReadPropertyNameSegmentRaw(); if (ExtendedStatsFields.TryGetValue(propertyName, out var value)) { switch (value) { case 0: extendedStatsMetric.Variance = reader.ReadNullableDouble(); break; case 1: extendedStatsMetric.StdDeviation = reader.ReadNullableDouble(); break; case 2: extendedStatsMetric.StdDeviationBounds = formatterResolver.GetFormatter <StandardDeviationBounds>().Deserialize(ref reader, formatterResolver); break; case 3: extendedStatsMetric.VariancePopulation = reader.ReadNullableDouble(); break; case 4: extendedStatsMetric.VarianceSampling = reader.ReadNullableDouble(); break; case 5: extendedStatsMetric.StdDeviationPopulation = reader.ReadNullableDouble(); break; case 6: extendedStatsMetric.StdDeviationSampling = reader.ReadNullableDouble(); break; } } else { reader.ReadNextBlock(); } reader.ReadIsValueSeparator(); } return(extendedStatsMetric); }
private IAggregate GetStatsAggregate(ref JsonReader reader, IJsonFormatterResolver formatterResolver, IReadOnlyDictionary <string, object> meta ) { var count = reader.ReadNullableLong().GetValueOrDefault(0); if (reader.GetCurrentJsonToken() == JsonToken.EndObject) { return new GeoCentroidAggregate { Count = count, Meta = meta } } ; reader.ReadNext(); // , var property = reader.ReadPropertyNameSegmentRaw(); // string stats aggregation if (property.EqualsBytes(MinLengthField)) { return(GetStringStatsAggregate(ref reader, formatterResolver, meta, count)); } // stats or extended stats aggregation var min = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // "max" reader.ReadNext(); // : var max = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // avg reader.ReadNext(); // : var average = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // sum reader.ReadNext(); // : var sum = reader.ReadDouble(); var statsMetric = new StatsAggregate { Average = average, Count = count, Max = max, Min = min, Sum = sum, Meta = meta }; if (reader.GetCurrentJsonToken() == JsonToken.EndObject) { return(statsMetric); } reader.ReadNext(); // , var propertyName = reader.ReadPropertyName(); while (reader.GetCurrentJsonToken() != JsonToken.EndObject && propertyName.EndsWith(Parser.AsStringSuffix)) { reader.ReadNext(); // <value> if (reader.GetCurrentJsonToken() == JsonToken.ValueSeparator) { reader.ReadNext(); // , propertyName = reader.ReadPropertyName(); } } if (reader.GetCurrentJsonToken() == JsonToken.EndObject) { return(statsMetric); } return(GetExtendedStatsAggregate(ref reader, formatterResolver, statsMetric, meta)); }
private IAggregate GetExtendedStatsAggregation(StatsAggregate statsMetric, JsonReader reader) { var extendedStatsMetric = new ExtendedStatsAggregate() { Average = statsMetric.Average, Count = statsMetric.Count, Max = statsMetric.Max, Min = statsMetric.Min, Sum = statsMetric.Sum }; reader.Read(); extendedStatsMetric.SumOfSquares = (reader.Value as double?); reader.Read(); reader.Read(); extendedStatsMetric.Variance = (reader.Value as double?); reader.Read(); reader.Read(); extendedStatsMetric.StdDeviation = (reader.Value as double?); reader.Read(); if (reader.TokenType != JsonToken.EndObject) { var bounds = new StandardDeviationBounds(); reader.Read(); reader.Read(); if ((reader.Value as string) == "upper") { reader.Read(); bounds.Upper = reader.Value as double?; } reader.Read(); if ((reader.Value as string) == "lower") { reader.Read(); bounds.Lower = reader.Value as double?; } extendedStatsMetric.StdDeviationBounds = bounds; reader.Read(); reader.Read(); } while (reader.TokenType != JsonToken.EndObject && (reader.Value as string).Contains("_as_string")) { // std_deviation_bounds is an object, so we need to skip its properties if ((reader.Value as string).Equals("std_deviation_bounds_as_string")) { reader.Read(); reader.Read(); reader.Read(); reader.Read(); } reader.Read(); reader.Read(); } return extendedStatsMetric; }
private IAggregate GetStatsMetric(JsonReader reader, JsonSerializer serializer) { reader.Read(); var count = (reader.Value as long?).GetValueOrDefault(0); reader.Read(); reader.Read(); var min = (reader.Value as double?); reader.Read(); reader.Read(); var max = (reader.Value as double?); reader.Read(); reader.Read(); var average = (reader.Value as double?); reader.Read(); reader.Read(); var sum = (reader.Value as double?); var statsMetric = new StatsAggregate() { Average = average, Count = count, Max = max, Min = min, Sum = sum }; reader.Read(); if (reader.TokenType == JsonToken.EndObject) return statsMetric; while (reader.TokenType != JsonToken.EndObject && (reader.Value as string).Contains("_as_string")) { reader.Read(); reader.Read(); } if (reader.TokenType == JsonToken.EndObject) return statsMetric; return GetExtendedStatsAggregation(statsMetric, reader); }
private IAggregate GetStatsAggregate(ref JsonReader reader, IReadOnlyDictionary <string, object> meta) { var count = reader.ReadNullableLong().GetValueOrDefault(0); if (reader.GetCurrentJsonToken() == JsonToken.EndObject) { return new GeoCentroidAggregate { Count = count, Meta = meta } } ; reader.ReadNext(); // , reader.ReadNext(); // "min" reader.ReadNext(); // : var min = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // "max" reader.ReadNext(); // : var max = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // avg reader.ReadNext(); // : var average = reader.ReadNullableDouble(); reader.ReadNext(); // , reader.ReadNext(); // sum reader.ReadNext(); // : var sum = reader.ReadDouble(); var statsMetric = new StatsAggregate { Average = average, Count = count, Max = max, Min = min, Sum = sum, Meta = meta }; if (reader.GetCurrentJsonToken() == JsonToken.EndObject) { return(statsMetric); } reader.ReadNext(); // , var propertyName = reader.ReadPropertyName(); while (reader.GetCurrentJsonToken() != JsonToken.EndObject && propertyName.Contains(Parser.AsStringSuffix)) { reader.ReadNext(); // <value> if (reader.GetCurrentJsonToken() == JsonToken.ValueSeparator) { reader.ReadNext(); // , propertyName = reader.ReadPropertyName(); } } if (reader.GetCurrentJsonToken() == JsonToken.EndObject) { return(statsMetric); } return(GetExtendedStatsAggregate(ref reader, statsMetric, meta)); }