.descending(descending) .build(); Map<String, Object> resultMap = new HashMap<>();
@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); }
@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); }
.aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); .aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); Iterable<Result<TimeseriesResultValue>> expectedResults = runner.run(QueryPlus.wrap(query2), CONTEXT).toList();
.dataSource("dummy") .intervals("2015-01-01/2015-01-02") .descending(descending) .granularity(Granularities.ALL) .aggregators( .dataSource("dummy") .intervals("2015-01-01/2015-01-02") .descending(descending) .granularity(Granularities.ALL) .aggregators(
.aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build();
.descending(descending) .build();
.descending(descending) .build();
.aggregators(aggregatorFactoryList) .postAggregators(QueryRunnerTestHelper.addRowsIndexConstant) .descending(descending) .build(); Map<String, Object> resultMap = new HashMap<>();
.descending(descending) .build();
.descending(descending) .limit(10) .build();
@Test public void testFullOnTimeseriesMaxMin() { TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(Granularities.ALL) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .aggregators( Arrays.asList( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) ) .descending(descending) .build(); DateTime expectedEarliest = DateTimes.of("2011-01-12"); DateTime expectedLast = DateTimes.of("2011-04-15"); Iterable<Result<TimeseriesResultValue>> results = runner.run(QueryPlus.wrap(query), CONTEXT).toList(); Result<TimeseriesResultValue> result = results.iterator().next(); Assert.assertEquals(expectedEarliest, result.getTimestamp()); Assert.assertFalse( StringUtils.format("Timestamp[%s] > expectedLast[%s]", result.getTimestamp(), expectedLast), result.getTimestamp().isAfter(expectedLast) ); final TimeseriesResultValue value = result.getValue(); Assert.assertEquals(result.toString(), 1870.061029, value.getDoubleMetric("maxIndex"), 1870.061029 * 1e-6); Assert.assertEquals(result.toString(), 59.021022, value.getDoubleMetric("minIndex"), 59.021022 * 1e-6); }
@Override @Test public void testFullOnTimeseriesMaxMin() { TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(Granularities.ALL) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .aggregators( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) .descending(descending) .build(); DateTime expectedEarliest = DateTimes.of("1970-01-01"); DateTime expectedLast = DateTimes.of("2011-04-15"); Iterable<Result<TimeseriesResultValue>> results = runner.run(QueryPlus.wrap(query), CONTEXT).toList(); Result<TimeseriesResultValue> result = results.iterator().next(); Assert.assertEquals(expectedEarliest, result.getTimestamp()); Assert.assertFalse( StringUtils.format("Timestamp[%s] > expectedLast[%s]", result.getTimestamp(), expectedLast), result.getTimestamp().isAfter(expectedLast) ); final TimeseriesResultValue value = result.getValue(); Assert.assertEquals(result.toString(), 1870.061029, value.getDoubleMetric("maxIndex"), 1870.061029 * 1e-6); Assert.assertEquals(result.toString(), 59.021022, value.getDoubleMetric("minIndex"), 59.021022 * 1e-6); }
@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); }
@Test public void testTimeseriesDescending() throws Exception { testQuery( "SELECT gran, SUM(cnt) FROM (\n" + " SELECT floor(__time TO month) AS gran,\n" + " cnt FROM druid.foo\n" + ") AS x\n" + "GROUP BY gran\n" + "ORDER BY gran DESC", ImmutableList.of( Druids.newTimeseriesQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Filtration.eternity())) .granularity(Granularities.MONTH) .aggregators(AGGS(new LongSumAggregatorFactory("a0", "cnt"))) .descending(true) .context(TIMESERIES_CONTEXT_DEFAULT) .build() ), ImmutableList.of( new Object[]{T("2001-01-01"), 3L}, new Object[]{T("2000-01-01"), 3L} ) ); }
@Test public void testTimeseriesNoAggregators() { Granularity gran = Granularities.DAY; TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(gran) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .descending(descending) .build(); Iterable<Result<TimeseriesResultValue>> results = runner.run(QueryPlus.wrap(query), CONTEXT).toList(); final DateTime expectedLast = descending ? QueryRunnerTestHelper.earliest : QueryRunnerTestHelper.last; Result lastResult = null; for (Result<TimeseriesResultValue> result : results) { DateTime current = result.getTimestamp(); Assert.assertFalse( StringUtils.format("Timestamp[%s] > expectedLast[%s]", current, expectedLast), descending ? current.isBefore(expectedLast) : current.isAfter(expectedLast) ); Assert.assertEquals(ImmutableMap.of(), result.getValue().getBaseObject()); lastResult = result; } Assert.assertEquals(lastResult.toString(), expectedLast, lastResult.getTimestamp()); }
@Test public void testTimeseriesQueryBeyondTimeRangeOfData() { TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.dayGran) .intervals( new MultipleIntervalSegmentSpec( Collections.singletonList(Intervals.of("2015-01-01/2015-01-10")) ) ) .aggregators( Arrays.asList( QueryRunnerTestHelper.rowsCount, new LongSumAggregatorFactory( "idx", "index" ) ) ) .descending(descending) .build(); List<Result<TimeseriesResultValue>> expectedResults = Collections.emptyList(); Iterable<Result<TimeseriesResultValue>> results = runner.run(QueryPlus.wrap(query), CONTEXT).toList(); assertExpectedResults(expectedResults, results); }
@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); }
private List<Result<TimeseriesResultValue>> runTimeseriesCount(IncrementalIndex index) { final QueryRunnerFactory factory = new TimeseriesQueryRunnerFactory( new TimeseriesQueryQueryToolChest(QueryRunnerTestHelper.NoopIntervalChunkingQueryRunnerDecorator()), new TimeseriesQueryEngine(), QueryRunnerTestHelper.NOOP_QUERYWATCHER ); final QueryRunner<Result<TimeseriesResultValue>> runner = makeQueryRunner( factory, new IncrementalIndexSegment(index, SegmentId.dummy("ds")) ); TimeseriesQuery query = Druids.newTimeseriesQueryBuilder() .dataSource("xxx") .granularity(Granularities.ALL) .intervals(ImmutableList.of(Intervals.of("2012-01-01T00:00:00Z/P1D"))) .aggregators(new CountAggregatorFactory("rows")) .descending(descending) .build(); HashMap<String, Object> context = new HashMap<String, Object>(); return runner.run(QueryPlus.wrap(query), context).toList(); }
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()); }