@Override @JsonIgnore public List<Interval> getIntervals() { return getInnerQueryUnchecked().getIntervals(); }
/** * Retrieve a simplified list of intervals aligned to the time buckets of the query which are partially or fully * volatile. * * @param query The query whose time bucketed intervals will be checked for volatility * @param factSource The fact source table whose intervals are being retrieved * * @return A simplified interval list of volatile intervals * * @deprecated Exists solely for backwards compatibility. * {@link VolatileIntervalsService#getVolatileIntervals(Granularity, List, PhysicalTable)} should be used instead */ @Deprecated default SimplifiedIntervalList getVolatileIntervals(DruidAggregationQuery<?> query, PhysicalTable factSource) { return getVolatileIntervals(query.getGranularity(), query.getIntervals(), factSource); } }
/** * Generate a query that calculates the even weight of the response cardinality of the given query. * * @param query Query to calculate the weighted response cardinality of * @param weight Weight to apply to each response row */ public WeightEvaluationQuery(DruidAggregationQuery<?> query, int weight) { super( makeInnerQuery(query, weight), AllGranularity.INSTANCE, Collections.<Dimension>emptyList(), (Filter) null, (Having) null, Collections.<Aggregation>singletonList(new LongSumAggregation("count", "count")), Collections.<PostAggregation>emptyList(), query.getIntervals(), query.getQueryType() == DefaultQueryType.GROUP_BY ? stripColumnsFromLimitSpec(query) : null ); }
/** * Build a SegmentIntervalsHashIdGenerator that uses the raw simplified intervals of a druidAggregationQuery to * create a segmentId. * * @param dataSourceMetadataService A Service to get information about segment metadata */ public SegmentIntervalsHashIdGenerator(DataSourceMetadataService dataSourceMetadataService) { this( dataSourceMetadataService, new DefaultingDictionary<>( druidAggregationQuery -> new SimplifiedIntervalList(druidAggregationQuery.getIntervals()) ) ); }
@Override public void processResponse(JsonNode json, DruidAggregationQuery<?> druidQuery, LoggingContext metadata) { if (failed.get()) { return; } AtomicInteger sharedIndex; Interval interval = druidQuery.getIntervals().get(0); if (interval == null || (sharedIndex = expectedIntervals.get(interval)) == null) { fail(UNEXPECTED_INTERVAL_FORMAT, druidQuery, interval); return; } int index; if ((index = sharedIndex.getAndSet(-1)) < 0 || completedIntervals.get(index) != null) { fail(EXTRA_RETURN_FORMAT, druidQuery, interval); return; } completedIntervals.set(index, new Pair<>(json, metadata)); if (completed.decrementAndGet() == 0) { Pair<JsonNode, LoggingContext> mergedResponse = mergeResponses(completedIntervals); RequestLog.restore(mergedResponse.getValue().getRequestLog()); next.processResponse(mergedResponse.getKey(), queryBeforeSplit, mergedResponse.getValue()); } }
/** * Build a Map of Class to Function that should be used to get requestedIntervals from the DruidQuery. * * @return A Map that maps Class to a function that computes the requested intervals for a Druid query of * that particular Class */ protected Map<Class, RequestedIntervalsFunction> buildSigningFunctions() { DefaultingDictionary<Class, RequestedIntervalsFunction> signingFunctions = new DefaultingDictionary<>( druidAggregationQuery -> new SimplifiedIntervalList(druidAggregationQuery.getIntervals()) ); signingFunctions.put(LookbackQuery.class, new LookbackQuery.LookbackQueryRequestedIntervalsFunction()); return signingFunctions; }
) { Granularity granularity = druidQuery.getGranularity(); List<Interval> queryIntervals = druidQuery.getIntervals();
long periods = IntervalUtils.countSlicedIntervals(innerQuery.getIntervals(), innerQuery.getGranularity()); long cardinalityWeight;
) { List<RexNode> timeFilters = druidQuery.getIntervals().stream() .map(interval -> {
/** * 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() ); }
timestamp = druidQuery.getIntervals().get(0).getStart(); } else { timestamp = sqlTimeConverter.getIntervalStart(
@Override public boolean handleRequest( RequestContext context, DataApiRequest request, DruidAggregationQuery<?> druidQuery, ResponseProcessor response ) { if (!(response instanceof MappingResponseProcessor)) { throw new IllegalStateException("Volatile data request handler requires a mapping response."); } MappingResponseProcessor mappingResponse = (MappingResponseProcessor) response; // Gather the volatile intervals. A volatile interval in one data source make that interval volatile overall. SimplifiedIntervalList volatileIntervals = volatileIntervalsService.getVolatileIntervals( druidQuery.getGranularity(), druidQuery.getIntervals(), physicalTableDictionary.get( druidQuery .getInnermostQuery() .getDataSource() .getPhysicalTable() .getName() ) ); if (!volatileIntervals.isEmpty()) { ResponseContext responseContext = response.getResponseContext(); responseContext.put(VOLATILE_INTERVALS_CONTEXT_KEY.getName(), volatileIntervals); } return next.handleRequest(context, request, druidQuery, mappingResponse); }
aggregations, postAggregations, innerQuery.getIntervals(), stripColumnsFromLimitSpec(innerQuery) );