.postAggregators(addRowsIndexConstant) .build(); QueryRunner runner = TestQueryRunners.makeTimeSeriesQueryRunner(segment3);
.intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build();
private TimeseriesQuery makeTimeseriesQuery() { return Druids.newTimeseriesQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnInterval) .aggregators( Lists.newArrayList( Iterables.concat( commonAggregators, Lists.newArrayList( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) ) ) ) .postAggregators(addRowsIndexConstant) .build(); }
QueryRunnerTestHelper.qualityUniques .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build();
.intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build();
.intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build();
.intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build();
new DoubleMaxAggregatorFactory("a4", null, "(strlen(\"dim2\") + log(\"m1\"))", macroTable) )) .postAggregators( EXPRESSION_POST_AGG("p0", "log((\"a1\" + \"a2\"))"), EXPRESSION_POST_AGG("p1", "(\"a1\" % 4)")
.intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build();
.intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build();
private void testFilteredTimeseries( QueryRunner runner, List<Result<TimeseriesResultValue>> expectedResults, String failMsg ) { TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnInterval) .filters(marketDimension, "spot") .aggregators( Lists.newArrayList( Iterables.concat( commonAggregators, Lists.newArrayList( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) ) ) ) .postAggregators(addRowsIndexConstant) .build(); failMsg += " filtered timeseries "; HashMap<String, Object> context = new HashMap<>(); Iterable<Result<TimeseriesResultValue>> actualResults = runner.run(QueryPlus.wrap(query), context).toList(); TestHelper.assertExpectedResults(expectedResults, actualResults, failMsg); }
@Test public void testTimeseriesWithMultiValueDimFilter2() { TimeseriesQuery query = Druids .newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .filters(QueryRunnerTestHelper.placementishDimension, "a") .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); TimeseriesQuery query1 = Druids .newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .filters(QueryRunnerTestHelper.qualityDimension, "automotive") .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); Iterable<Result<TimeseriesResultValue>> expectedResults = runner.run(QueryPlus.wrap(query1), CONTEXT).toList(); Iterable<Result<TimeseriesResultValue>> actualResults = runner.run(QueryPlus.wrap(query), CONTEXT).toList(); TestHelper.assertExpectedResults(expectedResults, actualResults); }
private TimeseriesQuery makeFilteredTimeseriesQuery() { return Druids.newTimeseriesQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnInterval) .filters( new OrDimFilter( new SelectorDimFilter(marketDimension, "spot", null), new SelectorDimFilter(marketDimension, "total_market", null) ) ) .aggregators( Lists.newArrayList( Iterables.concat( commonAggregators, Lists.newArrayList( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) ) ) ) .postAggregators(addRowsIndexConstant) .build(); }
@Test public void testPruneDeadAggregatorsThroughPostProjection() throws Exception { // Test for ProjectAggregatePruneUnusedCallRule. testQuery( "SELECT\n" + " CASE 'foo'\n" + " WHEN 'bar' THEN SUM(cnt) / 10\n" + " WHEN 'foo' THEN SUM(m1) / 10\n" + " WHEN 'baz' THEN SUM(m2) / 10\n" + " END\n" + "FROM foo", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Filtration.eternity())) .granularity(Granularities.ALL) .aggregators(AGGS(new DoubleSumAggregatorFactory("a0", "m1"))) .postAggregators(ImmutableList.of(EXPRESSION_POST_AGG("p0", "(\"a0\" / 10)"))) .context(TIMESERIES_CONTEXT_DEFAULT) .build() ), ImmutableList.of(new Object[]{2.1}) ); }
private void testFullOnTimeseries( QueryRunner runner, List<Result<TimeseriesResultValue>> expectedResults, String failMsg ) { TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource(dataSource) .granularity(allGran) .intervals(fullOnInterval) .aggregators( Lists.newArrayList( Iterables.concat( commonAggregators, Lists.newArrayList( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) ) ) ) .postAggregators(addRowsIndexConstant) .build(); failMsg += " timeseries "; HashMap<String, Object> context = new HashMap<>(); Iterable<Result<TimeseriesResultValue>> actualResults = runner.run(QueryPlus.wrap(query), context).toList(); TestHelper.assertExpectedResults(expectedResults, actualResults, failMsg); }
@Test public void testTimeseriesWithMultiValueDimFilter1() { TimeseriesQuery query = Druids .newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .filters(QueryRunnerTestHelper.placementishDimension, "preferred") .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); TimeseriesQuery query1 = Druids .newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); Iterable<Result<TimeseriesResultValue>> expectedResults = runner.run(QueryPlus.wrap(query1), CONTEXT).toList(); Iterable<Result<TimeseriesResultValue>> actualResults = runner.run(QueryPlus.wrap(query), CONTEXT).toList(); TestHelper.assertExpectedResults(expectedResults, actualResults); }
@Test public void testTimeseriesWithFilterOnNonExistentDimensionSkipBuckets() { TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .filters("bobby", "billy") .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .context(ImmutableMap.of("skipEmptyBuckets", "true")) .descending(descending) .build(); List<Result<TimeseriesResultValue>> expectedResults = Collections.emptyList(); Iterable<Result<TimeseriesResultValue>> results = runner.run(QueryPlus.wrap(query), new HashMap<String, Object>()).toList(); assertExpectedResults(expectedResults, results); }
@Test public void testQuerySerialization() throws IOException { Query query = Druids.newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .aggregators(QueryRunnerTestHelper.rowsCount, QueryRunnerTestHelper.indexDoubleSum) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); String json = jsonMapper.writeValueAsString(query); Query serdeQuery = jsonMapper.readValue(json, Query.class); Assert.assertEquals(query, serdeQuery); }
public TimeseriesQuery withPostAggregatorSpecs(final List<PostAggregator> postAggregatorSpecs) { return Druids.TimeseriesQueryBuilder.copy(this).postAggregators(postAggregatorSpecs).build(); }
public static TimeseriesQueryBuilder copy(TimeseriesQuery query) { return new TimeseriesQueryBuilder() .dataSource(query.getDataSource()) .intervals(query.getQuerySegmentSpec()) .descending(query.isDescending()) .virtualColumns(query.getVirtualColumns()) .filters(query.getDimensionsFilter()) .granularity(query.getGranularity()) .aggregators(query.getAggregatorSpecs()) .postAggregators(query.getPostAggregatorSpecs()) .limit(query.getLimit()) .context(query.getContext()); }