use of org.apache.druid.query.aggregation.CountAggregatorFactory in project druid by druid-io.
the class CalciteQueryTest method testGroupByLimitWrapping.
@Test
public void testGroupByLimitWrapping() throws Exception {
List<Object[]> expected;
if (NullHandling.replaceWithDefault()) {
expected = ImmutableList.of(new Object[] { "def", "abc", 1L }, new Object[] { "abc", "", 1L });
} else {
expected = ImmutableList.of(new Object[] { "def", "abc", 1L }, new Object[] { "abc", null, 1L });
}
testQuery("SELECT dim1, dim2, COUNT(*) FROM druid.foo GROUP BY dim1, dim2 ORDER BY dim1 DESC", OUTER_LIMIT_CONTEXT, ImmutableList.of(new GroupByQuery.Builder().setDataSource(CalciteTests.DATASOURCE1).setInterval(querySegmentSpec(Filtration.eternity())).setGranularity(Granularities.ALL).setDimensions(new DefaultDimensionSpec("dim1", "d0", ColumnType.STRING), new DefaultDimensionSpec("dim2", "d1", ColumnType.STRING)).setLimitSpec(DefaultLimitSpec.builder().orderBy(new OrderByColumnSpec("d0", Direction.DESCENDING, StringComparators.LEXICOGRAPHIC)).limit(2).build()).setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0"))).setContext(OUTER_LIMIT_CONTEXT).build()), expected);
}
use of org.apache.druid.query.aggregation.CountAggregatorFactory in project druid by druid-io.
the class CalciteQueryTest method testFilterAndGroupByLookup.
@Test
public void testFilterAndGroupByLookup() throws Exception {
// Cannot vectorize due to extraction dimension specs.
cannotVectorize();
final RegisteredLookupExtractionFn extractionFn = new RegisteredLookupExtractionFn(null, "lookyloo", false, null, null, true);
testQuery("SELECT LOOKUP(dim1, 'lookyloo'), COUNT(*) FROM foo\n" + "WHERE LOOKUP(dim1, 'lookyloo') <> 'xxx'\n" + "GROUP BY LOOKUP(dim1, 'lookyloo')", ImmutableList.of(GroupByQuery.builder().setDataSource(CalciteTests.DATASOURCE1).setInterval(querySegmentSpec(Filtration.eternity())).setGranularity(Granularities.ALL).setDimFilter(not(selector("dim1", "xxx", extractionFn))).setDimensions(dimensions(new ExtractionDimensionSpec("dim1", "d0", ColumnType.STRING, extractionFn))).setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0"))).setContext(QUERY_CONTEXT_DEFAULT).build()), ImmutableList.of(new Object[] { NULL_STRING, 5L }, new Object[] { "xabc", 1L }));
}
use of org.apache.druid.query.aggregation.CountAggregatorFactory in project druid by druid-io.
the class CalciteQueryTest method testGroupByStringLength.
@Test
public void testGroupByStringLength() throws Exception {
// Cannot vectorize due to virtual columns.
cannotVectorize();
testQuery("SELECT CHARACTER_LENGTH(dim1), COUNT(*) FROM druid.foo GROUP BY CHARACTER_LENGTH(dim1)", ImmutableList.of(GroupByQuery.builder().setDataSource(CalciteTests.DATASOURCE1).setInterval(querySegmentSpec(Filtration.eternity())).setGranularity(Granularities.ALL).setVirtualColumns(expressionVirtualColumn("v0", "strlen(\"dim1\")", ColumnType.LONG)).setDimensions(dimensions(new DefaultDimensionSpec("v0", "d0", ColumnType.LONG))).setAggregatorSpecs(aggregators(new CountAggregatorFactory("a0"))).setContext(QUERY_CONTEXT_DEFAULT).build()), ImmutableList.of(new Object[] { 0, 1L }, new Object[] { 1, 2L }, new Object[] { 3, 2L }, new Object[] { 4, 1L }));
}
use of org.apache.druid.query.aggregation.CountAggregatorFactory in project druid by druid-io.
the class CalciteQueryTest method testExpressionCounts.
@Test
public void testExpressionCounts() throws Exception {
cannotVectorize();
testQuery("SELECT\n" + " COUNT(reverse(dim2)),\n" + " COUNT(left(dim2, 5)),\n" + " COUNT(strpos(dim2, 'a'))\n" + "FROM druid.numfoo", ImmutableList.of(Druids.newTimeseriesQueryBuilder().dataSource(CalciteTests.DATASOURCE3).intervals(querySegmentSpec(Filtration.eternity())).granularity(Granularities.ALL).virtualColumns(expressionVirtualColumn("v0", "reverse(\"dim2\")", ColumnType.STRING), expressionVirtualColumn("v1", "left(\"dim2\",5)", ColumnType.STRING), expressionVirtualColumn("v2", "(strpos(\"dim2\",'a') + 1)", ColumnType.LONG)).aggregators(aggregators(new FilteredAggregatorFactory(new CountAggregatorFactory("a0"), not(selector("v0", null, null))), new FilteredAggregatorFactory(new CountAggregatorFactory("a1"), not(selector("v1", null, null))), new FilteredAggregatorFactory(new CountAggregatorFactory("a2"), not(selector("v2", null, null))))).context(QUERY_CONTEXT_DEFAULT).build()), ImmutableList.of(useDefault ? // default mode so is 0 + 1 for null rows)
new Object[] { 3L, 3L, 6L } : new Object[] { 4L, 4L, 4L }));
}
use of org.apache.druid.query.aggregation.CountAggregatorFactory in project druid by druid-io.
the class CalciteQueryTest method testFilterOnTimeExtractWithVariousTimeUnits.
@Test
public void testFilterOnTimeExtractWithVariousTimeUnits() throws Exception {
// Cannot vectorize due to virtual columns.
cannotVectorize();
testQuery("SELECT COUNT(*) FROM druid.foo4\n" + "WHERE EXTRACT(YEAR FROM __time) = 2000\n" + "AND EXTRACT(MICROSECOND FROM __time) = 946723\n" + "AND EXTRACT(MILLISECOND FROM __time) = 695\n" + "AND EXTRACT(ISODOW FROM __time) = 6\n" + "AND EXTRACT(ISOYEAR FROM __time) = 2000\n" + "AND EXTRACT(DECADE FROM __time) = 200\n" + "AND EXTRACT(CENTURY FROM __time) = 20\n" + "AND EXTRACT(MILLENNIUM FROM __time) = 2\n", QUERY_CONTEXT_DEFAULT, ImmutableList.of(Druids.newTimeseriesQueryBuilder().dataSource(CalciteTests.DATASOURCE4).intervals(querySegmentSpec(Filtration.eternity())).granularity(Granularities.ALL).virtualColumns(expressionVirtualColumn("v0", "timestamp_extract(\"__time\",'YEAR','UTC')", ColumnType.LONG), expressionVirtualColumn("v1", "timestamp_extract(\"__time\",'MICROSECOND','UTC')", ColumnType.LONG), expressionVirtualColumn("v2", "timestamp_extract(\"__time\",'MILLISECOND','UTC')", ColumnType.LONG), expressionVirtualColumn("v3", "timestamp_extract(\"__time\",'ISODOW','UTC')", ColumnType.LONG), expressionVirtualColumn("v4", "timestamp_extract(\"__time\",'ISOYEAR','UTC')", ColumnType.LONG), expressionVirtualColumn("v5", "timestamp_extract(\"__time\",'DECADE','UTC')", ColumnType.LONG), expressionVirtualColumn("v6", "timestamp_extract(\"__time\",'CENTURY','UTC')", ColumnType.LONG), expressionVirtualColumn("v7", "timestamp_extract(\"__time\",'MILLENNIUM','UTC')", ColumnType.LONG)).aggregators(aggregators(new CountAggregatorFactory("a0"))).filters(and(selector("v0", "2000", null), selector("v1", "946723", null), selector("v2", "695", null), selector("v3", "6", null), selector("v4", "2000", null), selector("v5", "200", null), selector("v6", "20", null), selector("v7", "2", null))).context(QUERY_CONTEXT_DEFAULT).build()), ImmutableList.of(new Object[] { 1L }));
}
Aggregations