/** * Create the inner query for an average. * * @param sourceMetric The metric being averaged over * @param innerDependentQuery The original query supporting the metric being averaged * * @return A template query representing the inner aggregation */ private TemplateDruidQuery buildInnerQuery(MetricField sourceMetric, TemplateDruidQuery innerDependentQuery) { Set<PostAggregation> newInnerPostAggregations = (sourceMetric instanceof PostAggregation) ? ImmutableSet.of((PostAggregation) sourceMetric) : Collections.emptySet(); // Build the inner query with the new aggregations and with the count return innerDependentQuery.withAggregations(innerDependentQuery.getAggregations()) .withPostAggregations(newInnerPostAggregations) .merge(buildTimeGrainCounterQuery()); }
@Override public TemplateDruidQuery updateOuterQuery( TemplateDruidQuery outerQuery, Map<String, String> oldFieldNameToNewFieldNameMap ) { Map<String, Aggregation> oldNameToNewAggregationMapping = new HashMap<>(); Set<Aggregation> updatedOuterAggs = updateQueryAggs( outerQuery.getAggregations(), oldFieldNameToNewFieldNameMap, oldNameToNewAggregationMapping ); //Update the FieldAccessors from the outer query post aggs to access the correct aggs. Set<PostAggregation> updateOuterPostAggs = new HashSet<>(); for (PostAggregation postAggregation: outerQuery.getPostAggregations()) { updateOuterPostAggs.add(replacePostAggWithPostAggFromMap(postAggregation, oldNameToNewAggregationMapping)); } //create new TDQ using updated aggs, updatedPostAggs, updatedInnerQuery and timegrain of outerQuery return new TemplateDruidQuery( updatedOuterAggs, updateOuterPostAggs, outerQuery.getInnerQuery().orElse(null), outerQuery.getTimeGrain() ); }
for (Aggregation aggregation : query.getAggregations()) {
groupByDimension.iterator().next(), filter, template.getAggregations(), template.getPostAggregations(), intervals,
Set<Aggregation> mergedAggregations = mergeAggregations(self.getAggregations(), sibling.getAggregations()); LinkedHashSet<PostAggregation> mergedPostAggregations = new LinkedHashSet<>(self.getPostAggregations()); mergedPostAggregations.addAll(sibling.getPostAggregations());
granularity, filter, template.getAggregations(), template.getPostAggregations(), intervals
mergedFilter, having, template.getAggregations(), template.getPostAggregations(), intervals,