@Override public InternalAggregation buildEmptyAggregation() { return new InternalAvg(name, 0.0, 0L, format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= sums.size()) { return buildEmptyAggregation(); } return new InternalAvg(name, sums.get(bucket), counts.get(bucket), format, pipelineAggregators(), metaData()); }
@Override public InternalAvg doReduce(List<InternalAggregation> aggregations, ReduceContext reduceContext) { long count = 0; double sum = 0; double compensation = 0; // Compute the sum of double values with Kahan summation algorithm which is more // accurate than naive summation. for (InternalAggregation aggregation : aggregations) { InternalAvg avg = (InternalAvg) aggregation; count += avg.count; if (Double.isFinite(avg.sum) == false) { sum += avg.sum; } else if (Double.isFinite(sum)) { double corrected = avg.sum - compensation; double newSum = sum + corrected; compensation = (newSum - sum) - corrected; sum = newSum; } } return new InternalAvg(getName(), sum, count, format, pipelineAggregators(), getMetaData()); }
@Override public InternalAvg readResult(StreamInput in) throws IOException { InternalAvg result = new InternalAvg(); result.readFrom(in); return result; } };
@Override public InternalAggregation buildEmptyAggregation() { return new InternalAvg(name, 0.0, 0L, format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildEmptyAggregation() { return new InternalAvg(name, 0.0, 0L, format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildEmptyAggregation() { return new InternalAvg(name, 0.0, 0L, format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildEmptyAggregation() { return new InternalAvg(name, 0.0, 0l, formatter, pipelineAggregators(), metaData()); }
@Override public InternalAvg doReduce(List<InternalAggregation> aggregations, ReduceContext reduceContext) { long count = 0; double sum = 0; for (InternalAggregation aggregation : aggregations) { count += ((InternalAvg) aggregation).count; sum += ((InternalAvg) aggregation).sum; } return new InternalAvg(getName(), sum, count, format, pipelineAggregators(), getMetaData()); }
@Override public InternalAvg doReduce(List<InternalAggregation> aggregations, ReduceContext reduceContext) { long count = 0; double sum = 0; for (InternalAggregation aggregation : aggregations) { count += ((InternalAvg) aggregation).count; sum += ((InternalAvg) aggregation).sum; } return new InternalAvg(getName(), sum, count, valueFormatter, pipelineAggregators(), getMetaData()); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= sums.size()) { return buildEmptyAggregation(); } return new InternalAvg(name, sums.get(bucket), counts.get(bucket), format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= sums.size()) { return buildEmptyAggregation(); } return new InternalAvg(name, sums.get(bucket), counts.get(bucket), format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= sums.size()) { return buildEmptyAggregation(); } return new InternalAvg(name, sums.get(bucket), counts.get(bucket), format, pipelineAggregators(), metaData()); }
@Override public InternalAggregation buildAggregation(long bucket) { if (valuesSource == null || bucket >= sums.size()) { return buildEmptyAggregation(); } return new InternalAvg(name, sums.get(bucket), counts.get(bucket), formatter, pipelineAggregators(), metaData()); }
@Override public InternalAvg doReduce(List<InternalAggregation> aggregations, ReduceContext reduceContext) { long count = 0; double sum = 0; double compensation = 0; // Compute the sum of double values with Kahan summation algorithm which is more // accurate than naive summation. for (InternalAggregation aggregation : aggregations) { InternalAvg avg = (InternalAvg) aggregation; count += avg.count; if (Double.isFinite(avg.sum) == false) { sum += avg.sum; } else if (Double.isFinite(sum)) { double corrected = avg.sum - compensation; double newSum = sum + corrected; compensation = (newSum - sum) - corrected; sum = newSum; } } return new InternalAvg(getName(), sum, count, format, pipelineAggregators(), getMetaData()); }
@Override public InternalAvg doReduce(List<InternalAggregation> aggregations, ReduceContext reduceContext) { long count = 0; double sum = 0; double compensation = 0; // Compute the sum of double values with Kahan summation algorithm which is more // accurate than naive summation. for (InternalAggregation aggregation : aggregations) { InternalAvg avg = (InternalAvg) aggregation; count += avg.count; if (Double.isFinite(avg.sum) == false) { sum += avg.sum; } else if (Double.isFinite(sum)) { double corrected = avg.sum - compensation; double newSum = sum + corrected; compensation = (newSum - sum) - corrected; sum = newSum; } } return new InternalAvg(getName(), sum, count, format, pipelineAggregators(), getMetaData()); }