@Test public void testSerdeLexicographicDimensionTopNMetricSpec() throws IOException { DimensionTopNMetricSpec expectedMetricSpec = new DimensionTopNMetricSpec(null, StringComparators.LEXICOGRAPHIC); DimensionTopNMetricSpec expectedMetricSpec1 = new DimensionTopNMetricSpec("test", StringComparators.LEXICOGRAPHIC); String jsonSpec = "{\n" + " \"type\": \"dimension\"," + " \"ordering\": \"lexicographic\"\n" + "}"; String jsonSpec1 = "{\n" + " \"type\": \"dimension\"," + " \"ordering\": \"lexicographic\",\n" + " \"previousStop\": \"test\"\n" + "}"; ObjectMapper jsonMapper = TestHelper.makeJsonMapper(); TopNMetricSpec actualMetricSpec = jsonMapper.readValue(jsonMapper.writeValueAsString(jsonMapper.readValue(jsonSpec, TopNMetricSpec.class)), TopNMetricSpec.class); TopNMetricSpec actualMetricSpec1 = jsonMapper.readValue(jsonMapper.writeValueAsString(jsonMapper.readValue(jsonSpec1, TopNMetricSpec.class)), TopNMetricSpec.class); Assert.assertEquals(expectedMetricSpec, actualMetricSpec); Assert.assertEquals(expectedMetricSpec1, actualMetricSpec1); }
@Test public void testSerdeAlphaNumericDimensionTopNMetricSpec() throws IOException { DimensionTopNMetricSpec expectedMetricSpec = new DimensionTopNMetricSpec(null, StringComparators.ALPHANUMERIC); DimensionTopNMetricSpec expectedMetricSpec1 = new DimensionTopNMetricSpec("test", StringComparators.ALPHANUMERIC); String jsonSpec = "{\n" + " \"type\": \"dimension\"," + " \"ordering\": \"alphanumeric\"\n" + "}"; String jsonSpec1 = "{\n" + " \"type\": \"dimension\"," + " \"ordering\": \"alphanumeric\",\n" + " \"previousStop\": \"test\"\n" + "}"; ObjectMapper jsonMapper = TestHelper.makeJsonMapper(); TopNMetricSpec actualMetricSpec = jsonMapper.readValue(jsonMapper.writeValueAsString(jsonMapper.readValue(jsonSpec, TopNMetricSpec.class)), TopNMetricSpec.class); TopNMetricSpec actualMetricSpec1 = jsonMapper.readValue(jsonMapper.writeValueAsString(jsonMapper.readValue(jsonSpec1, TopNMetricSpec.class)), TopNMetricSpec.class); Assert.assertEquals(expectedMetricSpec, actualMetricSpec); Assert.assertEquals(expectedMetricSpec1, actualMetricSpec1); }
@Test public void testSerdeStrlenDimensionTopNMetricSpec() throws IOException { DimensionTopNMetricSpec expectedMetricSpec = new DimensionTopNMetricSpec(null, StringComparators.STRLEN); DimensionTopNMetricSpec expectedMetricSpec1 = new DimensionTopNMetricSpec("test", StringComparators.STRLEN); String jsonSpec = "{\n" + " \"type\": \"dimension\"," + " \"ordering\": \"strlen\"\n" + "}"; String jsonSpec1 = "{\n" + " \"type\": \"dimension\"," + " \"ordering\": \"strlen\",\n" + " \"previousStop\": \"test\"\n" + "}"; ObjectMapper jsonMapper = TestHelper.makeJsonMapper(); TopNMetricSpec actualMetricSpec = jsonMapper.readValue(jsonMapper.writeValueAsString(jsonMapper.readValue(jsonSpec, TopNMetricSpec.class)), TopNMetricSpec.class); TopNMetricSpec actualMetricSpec1 = jsonMapper.readValue(jsonMapper.writeValueAsString(jsonMapper.readValue(jsonSpec1, TopNMetricSpec.class)), TopNMetricSpec.class); Assert.assertEquals(expectedMetricSpec, actualMetricSpec); Assert.assertEquals(expectedMetricSpec1, actualMetricSpec1); }
@Test public void testSerdeNumericDimensionTopNMetricSpec() throws IOException { DimensionTopNMetricSpec expectedMetricSpec = new DimensionTopNMetricSpec(null, StringComparators.NUMERIC); DimensionTopNMetricSpec expectedMetricSpec1 = new DimensionTopNMetricSpec("test", StringComparators.NUMERIC); String jsonSpec = "{\n" + " \"type\": \"dimension\"," + " \"ordering\": \"numeric\"\n" + "}"; String jsonSpec1 = "{\n" + " \"type\": \"dimension\"," + " \"ordering\": \"numeric\",\n" + " \"previousStop\": \"test\"\n" + "}"; ObjectMapper jsonMapper = TestHelper.makeJsonMapper(); TopNMetricSpec actualMetricSpec = jsonMapper.readValue(jsonMapper.writeValueAsString(jsonMapper.readValue(jsonSpec, TopNMetricSpec.class)), TopNMetricSpec.class); TopNMetricSpec actualMetricSpec1 = jsonMapper.readValue(jsonMapper.writeValueAsString(jsonMapper.readValue(jsonSpec1, TopNMetricSpec.class)), TopNMetricSpec.class); Assert.assertEquals(expectedMetricSpec, actualMetricSpec); Assert.assertEquals(expectedMetricSpec1, actualMetricSpec1); } }
.granularity(QueryRunnerTestHelper.allGran) .dimension(new DefaultDimensionSpec("index", "index_alias", ValueType.DOUBLE)) .metric(new DimensionTopNMetricSpec(null, StringComparators.NUMERIC)) .threshold(4) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec)
.granularity(QueryRunnerTestHelper.allGran) .dimension(new DefaultDimensionSpec("index", "index_alias", ValueType.LONG)) .metric(new DimensionTopNMetricSpec(null, StringComparators.NUMERIC)) .threshold(4) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec)
.granularity(QueryRunnerTestHelper.allGran) .dimension(new DefaultDimensionSpec("__time", "__time_alias", ValueType.LONG)) .metric(new DimensionTopNMetricSpec(null, StringComparators.NUMERIC)) .threshold(4) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec)
.granularity(QueryRunnerTestHelper.allGran) .dimension(QueryRunnerTestHelper.marketDimension) .metric(new InvertedTopNMetricSpec(new DimensionTopNMetricSpec("u", StringComparators.LEXICOGRAPHIC))) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird)
.granularity(QueryRunnerTestHelper.allGran) .dimension(QueryRunnerTestHelper.marketDimension) .metric(new DimensionTopNMetricSpec("", StringComparators.LEXICOGRAPHIC)) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird)
.granularity(QueryRunnerTestHelper.allGran) .dimension(QueryRunnerTestHelper.marketDimension) .metric(new InvertedTopNMetricSpec(new DimensionTopNMetricSpec("upfront", StringComparators.LEXICOGRAPHIC))) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird)
@Test public void testSortOnStringAsDouble() { TopNQuery query = new TopNQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .dimension(new DefaultDimensionSpec("market", "alias", ValueType.DOUBLE)) .metric(new DimensionTopNMetricSpec(null, StringComparators.NUMERIC)) .threshold(4) .intervals(QueryRunnerTestHelper.fullOnIntervalSpec) .build(); final Map<String, Object> nullAliasMap = new HashMap<>(); nullAliasMap.put("alias", null); List<Result<TopNResultValue>> expectedResults = Collections.singletonList( new Result<>( DateTimes.of("2011-01-12T00:00:00.000Z"), new TopNResultValue(Collections.singletonList(nullAliasMap)) ) ); assertExpectedResults(expectedResults, query); }
@Test public void testSelectDistinctWithSortAsOuterQuery4() throws Exception { testQuery( "SELECT * FROM (SELECT DISTINCT dim2 FROM druid.foo ORDER BY dim2 DESC LIMIT 5) LIMIT 10", ImmutableList.of( new TopNQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Filtration.eternity())) .granularity(Granularities.ALL) .dimension(new DefaultDimensionSpec("dim2", "d0")) .metric(new InvertedTopNMetricSpec(new DimensionTopNMetricSpec(null, StringComparators.LEXICOGRAPHIC))) .threshold(5) .context(QUERY_CONTEXT_DEFAULT) .build() ), NullHandling.replaceWithDefault() ? ImmutableList.of( new Object[]{""}, new Object[]{"abc"}, new Object[]{"a"} ) : ImmutableList.of( new Object[]{null}, new Object[]{"abc"}, new Object[]{"a"}, new Object[]{""} ) ); }
.granularity(QueryRunnerTestHelper.allGran) .dimension(QueryRunnerTestHelper.marketDimension) .metric(new DimensionTopNMetricSpec("spot", StringComparators.LEXICOGRAPHIC)) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird)
.granularity(QueryRunnerTestHelper.allGran) .dimension(QueryRunnerTestHelper.marketDimension) .metric(new DimensionTopNMetricSpec("t", StringComparators.LEXICOGRAPHIC)) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird)
.granularity(Granularities.ALL) .dimension(new DefaultDimensionSpec("dim2", "d0")) .metric(new DimensionTopNMetricSpec(null, StringComparators.LEXICOGRAPHIC)) .threshold(10) .context(QUERY_CONTEXT_DEFAULT)
@Test public void testSelectDistinctWithSortAsOuterQuery2() throws Exception { testQuery( "SELECT * FROM (SELECT DISTINCT dim2 FROM druid.foo ORDER BY dim2 LIMIT 5) LIMIT 10", ImmutableList.of( new TopNQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Filtration.eternity())) .granularity(Granularities.ALL) .dimension(new DefaultDimensionSpec("dim2", "d0")) .metric(new DimensionTopNMetricSpec(null, StringComparators.LEXICOGRAPHIC)) .threshold(5) .context(QUERY_CONTEXT_DEFAULT) .build() ), NullHandling.replaceWithDefault() ? ImmutableList.of( new Object[]{""}, new Object[]{"a"}, new Object[]{"abc"} ) : ImmutableList.of( new Object[]{null}, new Object[]{""}, new Object[]{"a"}, new Object[]{"abc"} ) ); }
@Test public void testSelectDistinctWithSortAsOuterQuery() throws Exception { testQuery( "SELECT * FROM (SELECT DISTINCT dim2 FROM druid.foo ORDER BY dim2) LIMIT 10", ImmutableList.of( new TopNQueryBuilder() .dataSource(CalciteTests.DATASOURCE1) .intervals(QSS(Filtration.eternity())) .granularity(Granularities.ALL) .dimension(new DefaultDimensionSpec("dim2", "d0")) .metric(new DimensionTopNMetricSpec(null, StringComparators.LEXICOGRAPHIC)) .threshold(10) .context(QUERY_CONTEXT_DEFAULT) .build() ), NullHandling.replaceWithDefault() ? ImmutableList.of( new Object[]{""}, new Object[]{"a"}, new Object[]{"abc"} ) : ImmutableList.of( new Object[]{null}, new Object[]{""}, new Object[]{"a"}, new Object[]{"abc"} ) ); }
.granularity(Granularities.ALL) .dimension(QueryRunnerTestHelper.marketDimension) .metric(new DimensionTopNMetricSpec(null, StringComparators.ALPHANUMERIC)) .threshold(2) .intervals(QueryRunnerTestHelper.secondOnly)
.granularity(Granularities.ALL) .dimension(QueryRunnerTestHelper.marketDimension) .metric(new DimensionTopNMetricSpec(null, StringComparators.NUMERIC)) .threshold(2) .intervals(QueryRunnerTestHelper.secondOnly)
EXPRESSION_POST_AGG("p0", "substring(\"d0\", 1, -1)") )) .metric(new DimensionTopNMetricSpec(null, StringComparators.LEXICOGRAPHIC)) .threshold(10) .context(QUERY_CONTEXT_DEFAULT)