@Override public Function<Result<TimeseriesResultValue>, Object> prepareForCache(boolean isResultLevelCache) { return input -> { TimeseriesResultValue results = input.getValue(); final List<Object> retVal = Lists.newArrayListWithCapacity(1 + aggs.size()); retVal.add(input.getTimestamp().getMillis()); for (AggregatorFactory agg : aggs) { retVal.add(results.getMetric(agg.getName())); } if (isResultLevelCache) { for (PostAggregator postAgg : query.getPostAggregatorSpecs()) { retVal.add(results.getMetric(postAgg.getName())); } } return retVal; }; }
private Function<Result<TimeseriesResultValue>, Result<TimeseriesResultValue>> makeComputeManipulatorFn( final TimeseriesQuery query, final MetricManipulationFn fn, final boolean calculatePostAggs ) { return result -> { final TimeseriesResultValue holder = result.getValue(); final Map<String, Object> values = new HashMap<>(holder.getBaseObject()); if (calculatePostAggs && !query.getPostAggregatorSpecs().isEmpty()) { // put non finalized aggregators for calculating dependent post Aggregators for (AggregatorFactory agg : query.getAggregatorSpecs()) { values.put(agg.getName(), holder.getMetric(agg.getName())); } for (PostAggregator postAgg : query.getPostAggregatorSpecs()) { values.put(postAgg.getName(), postAgg.compute(values)); } } for (AggregatorFactory agg : query.getAggregatorSpecs()) { values.put(agg.getName(), fn.manipulate(agg, holder.getMetric(agg.getName()))); } return new Result<>( result.getTimestamp(), new TimeseriesResultValue(values) ); }; } }
@Override public Result<TimeseriesResultValue> apply(Result<TimeseriesResultValue> arg1, Result<TimeseriesResultValue> arg2) { if (arg1 == null) { return arg2; } if (arg2 == null) { return arg1; } TimeseriesResultValue arg1Val = arg1.getValue(); TimeseriesResultValue arg2Val = arg2.getValue(); Map<String, Object> retVal = new LinkedHashMap<String, Object>(); for (AggregatorFactory factory : aggregations) { final String metricName = factory.getName(); retVal.put(metricName, factory.combine(arg1Val.getMetric(metricName), arg2Val.getMetric(metricName))); } return (gran instanceof AllGranularity) ? new Result<TimeseriesResultValue>( arg1.getTimestamp(), new TimeseriesResultValue(retVal) ) : new Result<TimeseriesResultValue>( gran.bucketStart(arg1.getTimestamp()), new TimeseriesResultValue(retVal) ); }
for (int i = 0; i < query.getAggregatorSpecs().size(); i++) { final AggregatorFactory aggregatorFactory = query.getAggregatorSpecs().get(i); final Object value = resultValue.getValue().getMetric(aggregatorFactory.getName()); if (grandTotals[i] == null) { grandTotals[i] = value;
@Override public Function<Result<TimeseriesResultValue>, Object> prepareForCache(boolean isResultLevelCache) { return input -> { TimeseriesResultValue results = input.getValue(); final List<Object> retVal = Lists.newArrayListWithCapacity(1 + aggs.size()); retVal.add(input.getTimestamp().getMillis()); for (AggregatorFactory agg : aggs) { retVal.add(results.getMetric(agg.getName())); } if (isResultLevelCache) { for (PostAggregator postAgg : query.getPostAggregatorSpecs()) { retVal.add(results.getMetric(postAgg.getName())); } } return retVal; }; }
private Function<Result<TimeseriesResultValue>, Result<TimeseriesResultValue>> makeComputeManipulatorFn( final TimeseriesQuery query, final MetricManipulationFn fn, final boolean calculatePostAggs ) { return result -> { final TimeseriesResultValue holder = result.getValue(); final Map<String, Object> values = Maps.newHashMap(holder.getBaseObject()); if (calculatePostAggs && !query.getPostAggregatorSpecs().isEmpty()) { // put non finalized aggregators for calculating dependent post Aggregators for (AggregatorFactory agg : query.getAggregatorSpecs()) { values.put(agg.getName(), holder.getMetric(agg.getName())); } for (PostAggregator postAgg : query.getPostAggregatorSpecs()) { values.put(postAgg.getName(), postAgg.compute(values)); } } for (AggregatorFactory agg : query.getAggregatorSpecs()) { values.put(agg.getName(), fn.manipulate(agg, holder.getMetric(agg.getName()))); } return new Result<>( result.getTimestamp(), new TimeseriesResultValue(values) ); }; } }
@Override public Result<TimeseriesResultValue> apply(Result<TimeseriesResultValue> arg1, Result<TimeseriesResultValue> arg2) { if (arg1 == null) { return arg2; } if (arg2 == null) { return arg1; } TimeseriesResultValue arg1Val = arg1.getValue(); TimeseriesResultValue arg2Val = arg2.getValue(); Map<String, Object> retVal = new LinkedHashMap<String, Object>(); for (AggregatorFactory factory : aggregations) { final String metricName = factory.getName(); retVal.put(metricName, factory.combine(arg1Val.getMetric(metricName), arg2Val.getMetric(metricName))); } return (gran instanceof AllGranularity) ? new Result<TimeseriesResultValue>( arg1.getTimestamp(), new TimeseriesResultValue(retVal) ) : new Result<TimeseriesResultValue>( gran.bucketStart(arg1.getTimestamp()), new TimeseriesResultValue(retVal) ); }
for (int i = 0; i < query.getAggregatorSpecs().size(); i++) { final AggregatorFactory aggregatorFactory = query.getAggregatorSpecs().get(i); final Object value = resultValue.getValue().getMetric(aggregatorFactory.getName()); if (grandTotals[i] == null) { grandTotals[i] = value;