@Override public void threshold(TopNQuery query) { setDimension("threshold", String.valueOf(query.getThreshold())); }
@VisibleForTesting public Pair<Integer, Integer> computeStartEnd(int cardinality) { int startIndex = ignoreFirstN; if (previousStop != null) { if (idLookup == null) { throw new UnsupportedOperationException("Only DimensionSelectors which support idLookup() are supported yet"); } int lookupId = idLookup.lookupId(previousStop) + 1; if (lookupId < 0) { lookupId *= -1; } if (lookupId > ignoreFirstN + keepOnlyN) { startIndex = ignoreFirstN + keepOnlyN; } else { startIndex = Math.max(lookupId, startIndex); } } int endIndex = Math.min(ignoreFirstN + keepOnlyN, cardinality); if (ignoreAfterThreshold && query.getDimensionsFilter() == null && query.getIntervals().stream().anyMatch(interval -> interval.contains(storageAdapter.getInterval()))) { endIndex = Math.min(endIndex, startIndex + query.getThreshold()); } return Pair.of(startIndex, endIndex); } }
@Override protected BinaryFn<Result<TopNResultValue>, Result<TopNResultValue>, Result<TopNResultValue>> createMergeFn( Query<Result<TopNResultValue>> input ) { TopNQuery query = (TopNQuery) input; return new TopNBinaryFn( query.getGranularity(), query.getDimensionSpec(), query.getTopNMetricSpec(), query.getThreshold(), query.getAggregatorSpecs(), query.getPostAggregatorSpecs() ); } };
public TopNQueryBuilder(final TopNQuery query) { this.dataSource = query.getDataSource(); this.virtualColumns = query.getVirtualColumns(); this.dimensionSpec = query.getDimensionSpec(); this.topNMetricSpec = query.getTopNMetricSpec(); this.threshold = query.getThreshold(); this.querySegmentSpec = query.getQuerySegmentSpec(); this.dimFilter = query.getDimensionsFilter(); this.granularity = query.getGranularity(); this.aggregatorSpecs = query.getAggregatorSpecs(); this.postAggregatorSpecs = query.getPostAggregatorSpecs(); this.context = query.getContext(); }
public static TopNResultBuilder makeResultBuilder(TopNParams params, TopNQuery query) { final Comparator comparator = query.getTopNMetricSpec() .getComparator(query.getAggregatorSpecs(), query.getPostAggregatorSpecs()); return query.getTopNMetricSpec().getResultBuilder( params.getCursor().getTime(), query.getDimensionSpec(), query.getThreshold(), comparator, query.getAggregatorSpecs(), query.getPostAggregatorSpecs() ); } }
if (query.getThreshold() > minTopNThreshold) { return runner.run(queryPlus, responseContext);
@Override public byte[] computeCacheKey(TopNQuery query) { final CacheKeyBuilder builder = new CacheKeyBuilder(TOPN_QUERY) .appendCacheable(query.getDimensionSpec()) .appendCacheable(query.getTopNMetricSpec()) .appendInt(query.getThreshold()) .appendCacheable(query.getGranularity()) .appendCacheable(query.getDimensionsFilter()) .appendCacheables(query.getAggregatorSpecs()) .appendCacheable(query.getVirtualColumns()); final List<PostAggregator> postAggregators = prunePostAggregators(query); if (!postAggregators.isEmpty()) { // Append post aggregators only when they are used as sort keys. // Note that appending an empty list produces a different cache key from not appending it. builder.appendCacheablesIgnoringOrder(postAggregators); } return builder.build(); }
Iterables.limit( input.getValue(), query.getThreshold()
ImmutableMap.of() ); Assert.assertEquals(1000, mockRunner.query.getThreshold()); Assert.assertEquals(500, mockRunner.query.getThreshold()); Assert.assertEquals(2000, mockRunner.query.getThreshold());
@Override public void threshold(TopNQuery query) { setDimension("threshold", String.valueOf(query.getThreshold())); }
@VisibleForTesting public Pair<Integer, Integer> computeStartEnd(int cardinality) { int startIndex = ignoreFirstN; if (previousStop != null) { if (idLookup == null) { throw new UnsupportedOperationException("Only DimensionSelectors which support idLookup() are supported yet"); } int lookupId = idLookup.lookupId(previousStop) + 1; if (lookupId < 0) { lookupId *= -1; } if (lookupId > ignoreFirstN + keepOnlyN) { startIndex = ignoreFirstN + keepOnlyN; } else { startIndex = Math.max(lookupId, startIndex); } } int endIndex = Math.min(ignoreFirstN + keepOnlyN, cardinality); if (ignoreAfterThreshold && query.getDimensionsFilter() == null && query.getIntervals().stream().anyMatch(interval -> interval.contains(storageAdapter.getInterval()))) { endIndex = Math.min(endIndex, startIndex + query.getThreshold()); } return Pair.of(startIndex, endIndex); } }
@Override protected BinaryFn<Result<TopNResultValue>, Result<TopNResultValue>, Result<TopNResultValue>> createMergeFn( Query<Result<TopNResultValue>> input ) { TopNQuery query = (TopNQuery) input; return new TopNBinaryFn( query.getGranularity(), query.getDimensionSpec(), query.getTopNMetricSpec(), query.getThreshold(), query.getAggregatorSpecs(), query.getPostAggregatorSpecs() ); } };
public TopNQueryBuilder(final TopNQuery query) { this.dataSource = query.getDataSource(); this.virtualColumns = query.getVirtualColumns(); this.dimensionSpec = query.getDimensionSpec(); this.topNMetricSpec = query.getTopNMetricSpec(); this.threshold = query.getThreshold(); this.querySegmentSpec = query.getQuerySegmentSpec(); this.dimFilter = query.getDimensionsFilter(); this.granularity = query.getGranularity(); this.aggregatorSpecs = query.getAggregatorSpecs(); this.postAggregatorSpecs = query.getPostAggregatorSpecs(); this.context = query.getContext(); }
public static TopNResultBuilder makeResultBuilder(TopNParams params, TopNQuery query) { final Comparator comparator = query.getTopNMetricSpec() .getComparator(query.getAggregatorSpecs(), query.getPostAggregatorSpecs()); return query.getTopNMetricSpec().getResultBuilder( params.getCursor().getTime(), query.getDimensionSpec(), query.getThreshold(), comparator, query.getAggregatorSpecs(), query.getPostAggregatorSpecs() ); } }
if (query.getThreshold() > minTopNThreshold) { return runner.run(queryPlus, responseContext);
@Override public byte[] computeCacheKey(TopNQuery query) { final CacheKeyBuilder builder = new CacheKeyBuilder(TOPN_QUERY) .appendCacheable(query.getDimensionSpec()) .appendCacheable(query.getTopNMetricSpec()) .appendInt(query.getThreshold()) .appendCacheable(query.getGranularity()) .appendCacheable(query.getDimensionsFilter()) .appendCacheables(query.getAggregatorSpecs()) .appendCacheable(query.getVirtualColumns()); final List<PostAggregator> postAggregators = prunePostAggregators(query); if (!postAggregators.isEmpty()) { // Append post aggregators only when they are used as sort keys. // Note that appending an empty list produces a different cache key from not appending it. builder.appendCacheablesIgnoringOrder(postAggregators); } return builder.build(); }
Iterables.limit( input.getValue(), query.getThreshold()