/** * Determine if the optimization to a Timeseries query can be done. * * @param apiRequest The request data * @param templateDruidQuery The template query * * @return true if the optimization can be done, false if it can't */ protected boolean canOptimizeTimeSeries(DataApiRequest apiRequest, TemplateDruidQuery templateDruidQuery) { return apiRequest.getDimensions().isEmpty() && !templateDruidQuery.isNested() && apiRequest.getSorts().isEmpty() && !apiRequest.getCount().isPresent() && apiRequest.getHavings().isEmpty(); } }
/** * Determine if the optimization to a TopN query can be done. * * @param apiRequest The request data * @param templateDruidQuery The template query * * @return true if the optimization can be done, false if it can't */ protected boolean canOptimizeTopN(DataApiRequest apiRequest, TemplateDruidQuery templateDruidQuery) { return apiRequest.getDimensions().size() == 1 && apiRequest.getSorts().size() == 1 && !templateDruidQuery.isNested() && BardFeatureFlag.TOP_N.isOn() && apiRequest.getHavings().isEmpty(); }
if (isNested()) { innerQuery = new TemplateDruidQuery(innerAggregations, Collections.emptySet(), nestedQuery, null); } else {
if (!template.isNested()) { LOG.trace("Building a single pass druid groupBy query"); dataSource = buildTableDataSource(table);
if (templateDruidQuery.isNested()) {
TemplateDruidQuery mergedNested = self.isNested() ? self.nestedQuery.merge(sibling.getInnerQuery().get()) : null;