/** * Retrieves a set of druid metric names associated with the query. * * @return set of druid metric names */ @JsonIgnore default Set<String> getDependentFieldNames() { return getInnermostQuery().getAggregations().stream() .map(Aggregation::getFieldName) .filter(it -> !it.isEmpty()) .collect(Collectors.toSet()); }
/** * Get all the dimensions from Filtered Aggregations of a filtered metric. * * @return Set of dimensions which are part of Filtered Aggregations in a filtered logical metric */ @JsonIgnore default Set<Dimension> getMetricDimensions() { return getInnermostQuery().getAggregations().stream() .map(Aggregation::getDependentDimensions) .flatMap(Set::stream) .collect(Collectors.toCollection(LinkedHashSet::new)); }
@Override @JsonIgnore public Set<Aggregation> getAggregations() { return getInnerQueryUnchecked().getAggregations(); }
/** * Produce the schema-defining columns for a given druid query. * * @return A stream of columns based on the signature of the Druid Query. */ default Stream<Column> buildSchemaColumns() { return Stream.of( getDimensions().stream() .map(DimensionColumn::new), Stream.concat( getAggregations().stream() .map(Aggregation::getName), getPostAggregations().stream() .map(PostAggregation::getName) ).map(MetricColumn::new) ).flatMap(Function.identity()); } }
return druidQuery.getAggregations() .stream() .collect(
/** * Evaluate Druid query for expensive aggregation that could bring down Druid. * * @param query Druid Query * * @return query or null if not required */ public static WeightEvaluationQuery makeWeightEvaluationQuery(DruidAggregationQuery<?> query) { // get inner-most query for evaluation DruidAggregationQuery<?> innerQuery = query.getInnermostQuery(); int weight = Utils.getSubsetByType(innerQuery.getAggregations(), SketchAggregation.class).size(); return new WeightEvaluationQuery(innerQuery, weight); }
ApiToFieldMapper apiToFieldMapper ) { return druidQuery.getAggregations() .stream() .map(aggregation -> druidSqlAggregationConverter.apply(aggregation, apiToFieldMapper))
DruidAggregationQuery<?> innerQuery = query.getInnermostQuery(); int sketchWeight = Utils.getSubsetByType(innerQuery.getAggregations(), SketchAggregation.class).size(); if (sketchWeight == 0) { return 0;
/** * Wraps a query as a GroupBy Query. * * @param query The query to wrap. */ public SqlAggregationQuery(DruidAggregationQuery<?> query) { this( query.getDataSource(), query.getGranularity(), query.getDimensions(), query.getFilter(), query.getAggregations(), query.getPostAggregations(), query.getIntervals(), query.getContext() ); }