|
|
|
@ -2733,7 +2733,6 @@ type groupedAggregation struct {
|
|
|
|
|
floatValue float64 |
|
|
|
|
histogramValue *histogram.FloatHistogram |
|
|
|
|
floatMean float64 |
|
|
|
|
histogramMean *histogram.FloatHistogram |
|
|
|
|
groupCount int |
|
|
|
|
heap vectorByValueHeap |
|
|
|
|
reverseHeap vectorByReverseValueHeap |
|
|
|
@ -2762,20 +2761,14 @@ func (ev *evaluator) aggregation(e *parser.AggregateExpr, q float64, inputMatrix
|
|
|
|
|
floatMean: f, |
|
|
|
|
groupCount: 1, |
|
|
|
|
} |
|
|
|
|
switch { |
|
|
|
|
case h == nil: |
|
|
|
|
group.hasFloat = true |
|
|
|
|
case op == parser.SUM: |
|
|
|
|
group.histogramValue = h.Copy() |
|
|
|
|
group.hasHistogram = true |
|
|
|
|
case op == parser.AVG: |
|
|
|
|
group.histogramMean = h.Copy() |
|
|
|
|
group.hasHistogram = true |
|
|
|
|
case op == parser.STDVAR || op == parser.STDDEV: |
|
|
|
|
group.groupCount = 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
switch op { |
|
|
|
|
case parser.SUM, parser.AVG: |
|
|
|
|
if h == nil { |
|
|
|
|
group.hasFloat = true |
|
|
|
|
} else { |
|
|
|
|
group.histogramValue = h.Copy() |
|
|
|
|
group.hasHistogram = true |
|
|
|
|
} |
|
|
|
|
case parser.STDVAR, parser.STDDEV: |
|
|
|
|
group.floatValue = 0 |
|
|
|
|
case parser.QUANTILE: |
|
|
|
@ -2807,11 +2800,11 @@ func (ev *evaluator) aggregation(e *parser.AggregateExpr, q float64, inputMatrix
|
|
|
|
|
group.groupCount++ |
|
|
|
|
if h != nil { |
|
|
|
|
group.hasHistogram = true |
|
|
|
|
if group.histogramMean != nil { |
|
|
|
|
if group.histogramValue != nil { |
|
|
|
|
left := h.Copy().Div(float64(group.groupCount)) |
|
|
|
|
right := group.histogramMean.Copy().Div(float64(group.groupCount)) |
|
|
|
|
right := group.histogramValue.Copy().Div(float64(group.groupCount)) |
|
|
|
|
toAdd := left.Sub(right) |
|
|
|
|
group.histogramMean.Add(toAdd) |
|
|
|
|
group.histogramValue.Add(toAdd) |
|
|
|
|
} |
|
|
|
|
// Otherwise the aggregation contained floats
|
|
|
|
|
// previously and will be invalid anyway. No
|
|
|
|
@ -2886,7 +2879,7 @@ func (ev *evaluator) aggregation(e *parser.AggregateExpr, q float64, inputMatrix
|
|
|
|
|
continue |
|
|
|
|
} |
|
|
|
|
if aggr.hasHistogram { |
|
|
|
|
aggr.histogramValue = aggr.histogramMean.Compact(0) |
|
|
|
|
aggr.histogramValue = aggr.histogramValue.Compact(0) |
|
|
|
|
} else { |
|
|
|
|
aggr.floatValue = aggr.floatMean |
|
|
|
|
} |
|
|
|
|