@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); }
@Override public int hashCode() { int result = getPreviousStop() != null ? getPreviousStop().hashCode() : 0; result = 31 * result + getOrdering().hashCode(); return result; } }
@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); }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } DimensionTopNMetricSpec that = (DimensionTopNMetricSpec) o; if (getPreviousStop() != null ? !getPreviousStop().equals(that.getPreviousStop()) : that.getPreviousStop() != null) { return false; } return getOrdering().equals(that.getOrdering()); }
@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); }
@Override public int hashCode() { int result = getPreviousStop() != null ? getPreviousStop().hashCode() : 0; result = 31 * result + getOrdering().hashCode(); return result; } }
@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); } }
@Override public boolean equals(Object o) { if (this == o) { return true; } if (o == null || getClass() != o.getClass()) { return false; } DimensionTopNMetricSpec that = (DimensionTopNMetricSpec) o; if (getPreviousStop() != null ? !getPreviousStop().equals(that.getPreviousStop()) : that.getPreviousStop() != null) { return false; } return getOrdering().equals(that.getOrdering()); }
.granularity(Granularities.ALL) .dimension("dimUniform") .metric(new DimensionTopNMetricSpec(null, StringComparators.NUMERIC)) .intervals(intervalSpec) .aggregators(queryAggs); .granularity(Granularities.ALL) .dimension("dimUniform") .metric(new DimensionTopNMetricSpec(null, StringComparators.ALPHANUMERIC)) .intervals(intervalSpec) .aggregators(queryAggs);
.granularity(Granularities.ALL) .dimension("dimUniform") .metric(new DimensionTopNMetricSpec(null, StringComparators.NUMERIC)) .intervals(intervalSpec) .aggregators(queryAggs); .granularity(Granularities.ALL) .dimension("dimUniform") .metric(new DimensionTopNMetricSpec(null, StringComparators.ALPHANUMERIC)) .intervals(intervalSpec) .aggregators(queryAggs);
.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("index", "index_alias", ValueType.DOUBLE)) .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)
final DimensionTopNMetricSpec baseMetricSpec = new DimensionTopNMetricSpec( null, limitColumn.getDimensionComparator()
Granularities.ALL, new DefaultDimensionSpec("INVALID_DIM_NAME", null), new DimensionTopNMetricSpec(null, StringComparators.LEXICOGRAPHIC), 2, aggregatorFactories,
.granularity(QueryRunnerTestHelper.allGran) .dimension(QueryRunnerTestHelper.marketDimension) .metric(new InvertedTopNMetricSpec(new DimensionTopNMetricSpec("upfront", StringComparators.LEXICOGRAPHIC))) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird)
.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)
@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[]{""} ) ); }