@Override protected BinaryFn<Result<TimeseriesResultValue>, Result<TimeseriesResultValue>, Result<TimeseriesResultValue>> createMergeFn( Query<Result<TimeseriesResultValue>> input ) { TimeseriesQuery query = (TimeseriesQuery) input; return new TimeseriesBinaryFn( query.getGranularity(), query.getAggregatorSpecs() ); } };
@Override public TimeseriesQueryMetrics makeMetrics(TimeseriesQuery query) { TimeseriesQueryMetrics queryMetrics = queryMetricsFactory.makeMetrics(); queryMetrics.query(query); return queryMetrics; }
@Override public Function<Result<TimeseriesResultValue>, Result<TimeseriesResultValue>> makePostComputeManipulatorFn( TimeseriesQuery query, MetricManipulationFn fn ) { return makeComputeManipulatorFn(query, fn, true); }
public static TimeseriesQueryRunnerFactory newTimeseriesQueryRunnerFactory() { return new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest(NoopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); }
@Override public String toString() { return "TimeseriesQuery{" + "dataSource='" + getDataSource() + '\'' + ", querySegmentSpec=" + getQuerySegmentSpec() + ", descending=" + isDescending() + ", virtualColumns=" + virtualColumns + ", dimFilter=" + dimFilter + ", granularity='" + getGranularity() + '\'' + ", aggregatorSpecs=" + aggregatorSpecs + ", postAggregatorSpecs=" + postAggregatorSpecs + ", limit=" + limit + ", context=" + getContext() + '}'; }
@Override public void query(TimeseriesQuery query) { super.query(query); limit(query); numMetrics(query); numComplexMetrics(query); granularity(query); }
@Override public void numMetrics(TimeseriesQuery query) { setDimension("numMetrics", String.valueOf(query.getAggregatorSpecs().size())); }
public TimeseriesQuery build() { return new TimeseriesQuery( dataSource, querySegmentSpec, descending, virtualColumns, dimFilter, granularity, aggregatorSpecs, postAggregatorSpecs, limit, context ); }
public Result<TimeseriesResultValue> build() { return new Result<TimeseriesResultValue>( timestamp, new TimeseriesResultValue(metricValues) ); } }
@Override public TimeseriesQueryMetrics makeMetrics() { return new DefaultTimeseriesQueryMetrics(jsonMapper); } }
@Override public void limit(TimeseriesQuery query) { setDimension("limit", String.valueOf(query.getLimit())); }
@Override public TimeseriesQuery withOverriddenContext(Map<String, Object> contextOverrides) { Map<String, Object> newContext = computeOverriddenContext(getContext(), contextOverrides); return Druids.TimeseriesQueryBuilder.copy(this).context(newContext).build(); }
public boolean isSkipEmptyBuckets() { return getContextBoolean(SKIP_EMPTY_BUCKETS, false); }
@VisibleForTesting public TimeseriesQueryQueryToolChest(IntervalChunkingQueryRunnerDecorator intervalChunkingQueryRunnerDecorator) { this(intervalChunkingQueryRunnerDecorator, DefaultTimeseriesQueryMetricsFactory.instance()); }
@Override public QueryRunner<Result<TimeseriesResultValue>> createRunner(final Segment segment) { return new TimeseriesQueryRunner(engine, segment.asStorageAdapter()); }
public static <T> QueryRunner<T> makeTimeSeriesQueryRunner(Segment adapter) { QueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest( QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); return new FinalizeResultsQueryRunner<T>( factory.createRunner(adapter), factory.getToolchest() ); }
@Override public void numComplexMetrics(TimeseriesQuery query) { int numComplexAggs = DruidMetrics.findNumComplexAggs(query.getAggregatorSpecs()); setDimension("numComplexMetrics", String.valueOf(numComplexAggs)); }
@Override public Function<Result<TimeseriesResultValue>, Result<TimeseriesResultValue>> makePreComputeManipulatorFn( final TimeseriesQuery query, final MetricManipulationFn fn ) { return makeComputeManipulatorFn(query, fn, false); }
public boolean isGrandTotal() { return getContextBoolean(CTX_GRAND_TOTAL, false); }
@Parameterized.Parameters(name = "{0}:descending={1}") public static Iterable<Object[]> constructorFeeder() { return QueryRunnerTestHelper.cartesian( QueryRunnerTestHelper.makeUnionQueryRunners( new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ) ), // descending? Arrays.asList(false, true) ); }