@Deprecated public TopNQueryBuilder copy(TopNQueryBuilder builder) { return new TopNQueryBuilder() .dataSource(builder.dataSource) .virtualColumns(builder.virtualColumns) .dimension(builder.dimensionSpec) .metric(builder.topNMetricSpec) .threshold(builder.threshold) .intervals(builder.querySegmentSpec) .filters(builder.dimFilter) .granularity(builder.granularity) .aggregators(builder.aggregatorSpecs) .postAggregators(builder.postAggregatorSpecs) .context(builder.context); }
public TopNQuery withAggregatorSpecs(List<AggregatorFactory> aggregatorSpecs) { return new TopNQueryBuilder(this).aggregators(aggregatorSpecs).build(); }
@Override public TopNQuery withQuerySegmentSpec(QuerySegmentSpec querySegmentSpec) { return new TopNQueryBuilder(this).intervals(querySegmentSpec).build(); }
@Override public Query<Result<TopNResultValue>> withDataSource(DataSource dataSource) { return new TopNQueryBuilder(this).dataSource(dataSource).build(); }
public TopNQuery withDimensionSpec(DimensionSpec spec) { return new TopNQueryBuilder(this).dimension(spec).build(); }
public TopNQuery withThreshold(int threshold) { return new TopNQueryBuilder(this).threshold(threshold).build(); }
public TopNQuery withDimFilter(DimFilter dimFilter) { return new TopNQueryBuilder(this).filters(dimFilter).build(); }
@Override public TopNQuery withOverriddenContext(Map<String, Object> contextOverrides) { return new TopNQueryBuilder(this).context(computeOverriddenContext(getContext(), contextOverrides)).build(); }
public TopNQueryBuilder dimension(String d) { return dimension(d, null); }
@Deprecated public TopNQueryBuilder copy(TopNQuery query) { return new TopNQueryBuilder(query); }
public TopNQueryBuilder metric(String s) { return metric(new NumericTopNMetricSpec(s)); }
public TopNQueryBuilder dimension(String d, String outputName) { return dimension(new DefaultDimensionSpec(d, outputName)); }
private TopNQuery makeTopNQuery() { return new TopNQueryBuilder() .dataSource(dataSource) .granularity(allGran) .dimension(marketDimension) .metric(indexMetric) .threshold(3) .intervals(fullOnInterval) .aggregators( Lists.newArrayList( Iterables.concat( commonAggregators, Lists.newArrayList( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) ) ) ) .postAggregators(Collections.singletonList(addRowsIndexConstant)) .build(); }
@Override public Query<Result<TopNResultValue>> optimizeForSegment(PerSegmentQueryOptimizationContext optimizationContext) { return new TopNQueryBuilder(this).aggregators(optimizeAggs(optimizationContext)).build(); }
@Test public void testTopNWithMultiValueDimFilter1() TopNQuery query = new TopNQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .filters(QueryRunnerTestHelper.placementishDimension, "m") .dimension(QueryRunnerTestHelper.marketDimension) .metric(QueryRunnerTestHelper.indexMetric) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(commonAggregators) .postAggregators(Collections.singletonList(QueryRunnerTestHelper.addRowsIndexConstant)) .build(); new TopNQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .filters(QueryRunnerTestHelper.qualityDimension, "mezzanine") .dimension(QueryRunnerTestHelper.marketDimension) .metric(QueryRunnerTestHelper.indexMetric) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(commonAggregators) .postAggregators(Collections.singletonList(QueryRunnerTestHelper.addRowsIndexConstant)) .build() ).toList(), query
TopNQuery query = new TopNQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .filters(QueryRunnerTestHelper.placementishDimension, "m", "a", "b") .dimension(QueryRunnerTestHelper.qualityDimension) .metric(QueryRunnerTestHelper.indexMetric) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(commonAggregators) .postAggregators(Collections.singletonList(QueryRunnerTestHelper.addRowsIndexConstant)) .build(); new TopNQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .filters( QueryRunnerTestHelper.qualityDimension, "mezzanine", .dimension(QueryRunnerTestHelper.qualityDimension) .metric(QueryRunnerTestHelper.indexMetric) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(commonAggregators) .postAggregators(Collections.singletonList(QueryRunnerTestHelper.addRowsIndexConstant)) .build() ).toList(), query
@Test public void testTopNWithNonExistentFilter() { TopNQuery query = new TopNQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .filters(QueryRunnerTestHelper.marketDimension, "billyblank") .dimension(QueryRunnerTestHelper.marketDimension) .metric(QueryRunnerTestHelper.indexMetric) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(commonAggregators) .postAggregators(Collections.singletonList(QueryRunnerTestHelper.addRowsIndexConstant)) .build(); assertExpectedResults( Collections.singletonList( new Result<>(DateTimes.of("2011-04-01T00:00:00.000Z"), new TopNResultValue(Collections.emptyList())) ), query ); }
@Test public void testQuerySerialization() throws IOException { Query query = new TopNQueryBuilder() .dataSource(dataSource) .granularity(allGran) .dimension(marketDimension) .metric(indexMetric) .threshold(4) .intervals(fullOnIntervalSpec) .aggregators( Lists.newArrayList( Iterables.concat( commonDoubleAggregators, Lists.newArrayList( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) ) ) ) .postAggregators(Collections.singletonList(addRowsIndexConstant)) .build(); String json = jsonMapper.writeValueAsString(query); Query serdeQuery = jsonMapper.readValue(json, Query.class); Assert.assertEquals(query, serdeQuery); }
/** See {@link #runTests} */ @SuppressWarnings("unused") private void testFullOnTopN(QueryRunner runner, List<Result<TopNResultValue>> expectedResults, String failMsg) { TopNQuery query = new TopNQueryBuilder() .dataSource(dataSource) .granularity(allGran) .dimension(marketDimension) .metric(indexMetric) .threshold(3) .intervals(fullOnInterval) .aggregators( Lists.newArrayList( Iterables.concat( commonAggregators, Lists.newArrayList( new DoubleMaxAggregatorFactory("maxIndex", "index"), new DoubleMinAggregatorFactory("minIndex", "index") ) ) ) ) .postAggregators(Collections.singletonList(addRowsIndexConstant)) .build(); failMsg += " topN "; HashMap<String, Object> context = new HashMap<>(); Iterable<Result<TopNResultValue>> actualResults = runner.run(QueryPlus.wrap(query), context).toList(); TestHelper.assertExpectedResults(expectedResults, actualResults, failMsg); }
@Test public void testTopNWithFilter1() TopNQuery query = new TopNQueryBuilder() .dataSource(QueryRunnerTestHelper.dataSource) .granularity(QueryRunnerTestHelper.allGran) .filters(QueryRunnerTestHelper.marketDimension, "upfront") .dimension(QueryRunnerTestHelper.marketDimension) .metric(QueryRunnerTestHelper.indexMetric) .threshold(4) .intervals(QueryRunnerTestHelper.firstToThird) .aggregators(commonAggregators) .postAggregators(Collections.singletonList(QueryRunnerTestHelper.addRowsIndexConstant)) .build();