@Override public boolean canBeOptimizedUnordered() { return delegate.canBeOptimizedUnordered(); }
@Override public <T> TopNMetricSpecBuilder<T> configureOptimizer(TopNMetricSpecBuilder<T> builder) { if (!canBeOptimizedUnordered()) { return builder; } return delegate.configureOptimizer(builder); }
@Override public byte[] getCacheKey() { final byte[] cacheKey = delegate.getCacheKey(); return ByteBuffer.allocate(1 + cacheKey.length).put(CACHE_TYPE_ID).put(cacheKey).array(); }
public TopNBinaryFn( final Granularity granularity, final DimensionSpec dimSpec, final TopNMetricSpec topNMetricSpec, final int threshold, final List<AggregatorFactory> aggregatorSpecs, final List<PostAggregator> postAggregatorSpecs ) { this.dimSpec = dimSpec; this.gran = granularity; this.topNMetricSpec = topNMetricSpec; this.threshold = threshold; this.aggregations = aggregatorSpecs; this.postAggregations = AggregatorUtil.pruneDependentPostAgg( postAggregatorSpecs, topNMetricSpec.getMetricName(dimSpec) ); this.dimension = dimSpec.getOutputName(); this.comparator = topNMetricSpec.getComparator(aggregatorSpecs, postAggregatorSpecs); }
@Override public String getMetricName(DimensionSpec dimSpec) { return delegate.getMetricName(dimSpec); }
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() ); } }
@Override public void initTopNAlgorithmSelector(TopNAlgorithmSelector selector) { delegate.initTopNAlgorithmSelector(selector); }
@Override public void verifyPreconditions( List<AggregatorFactory> aggregatorSpecs, List<PostAggregator> postAggregatorSpecs ) { delegate.verifyPreconditions(aggregatorSpecs, postAggregatorSpecs); }
@Override public TopNResultBuilder getResultBuilder( DateTime timestamp, DimensionSpec dimSpec, int threshold, Comparator comparator, List<AggregatorFactory> aggFactories, List<PostAggregator> postAggs ) { return delegate.getResultBuilder( timestamp, dimSpec, threshold, comparator, aggFactories, postAggs ); }
@Override public Comparator getComparator( final List<AggregatorFactory> aggregatorSpecs, final List<PostAggregator> postAggregatorSpecs ) { return Comparator.nullsFirst(delegate.getComparator(aggregatorSpecs, postAggregatorSpecs).reversed()); }
private static List<PostAggregator> prunePostAggregators(TopNQuery query) { return AggregatorUtil.pruneDependentPostAgg( query.getPostAggregatorSpecs(), query.getTopNMetricSpec().getMetricName(query.getDimensionSpec()) ); }
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() ); } }
public TopNBinaryFn( final Granularity granularity, final DimensionSpec dimSpec, final TopNMetricSpec topNMetricSpec, final int threshold, final List<AggregatorFactory> aggregatorSpecs, final List<PostAggregator> postAggregatorSpecs ) { this.dimSpec = dimSpec; this.gran = granularity; this.topNMetricSpec = topNMetricSpec; this.threshold = threshold; this.aggregations = aggregatorSpecs; this.postAggregations = AggregatorUtil.pruneDependentPostAgg( postAggregatorSpecs, topNMetricSpec.getMetricName(dimSpec) ); this.dimension = dimSpec.getOutputName(); this.comparator = topNMetricSpec.getComparator(aggregatorSpecs, postAggregatorSpecs); }
public void initTopNAlgorithmSelector(TopNAlgorithmSelector selector) { if (dimensionSpec.getExtractionFn() != null) { selector.setHasExtractionFn(true); } topNMetricSpec.initTopNAlgorithmSelector(selector); }
topNMetricSpec.verifyPreconditions(this.aggregatorSpecs, this.postAggregatorSpecs);
TopNResultBuilder bob = topNMetricSpec.getResultBuilder( timestamp, dimSpec,
@Override public int compare(Object o1, Object o2) { // nulls last if (o1 == null) { return 1; } if (o2 == null) { return -1; } return delegate.getComparator(aggregatorSpecs, postAggregatorSpecs).compare(o1, o2); } }
query.getPostAggregatorSpecs(), query.getTopNMetricSpec() .getMetricName(query.getDimensionSpec()) );
@Override public void initTopNAlgorithmSelector(TopNAlgorithmSelector selector) { delegate.initTopNAlgorithmSelector(selector); }
public static boolean canApplyExtractionInPost(TopNQuery query) { return query.getDimensionSpec() != null && query.getDimensionSpec().getExtractionFn() != null && ExtractionFn.ExtractionType.ONE_TO_ONE.equals(query.getDimensionSpec() .getExtractionFn() .getExtractionType()) && query.getTopNMetricSpec().canBeOptimizedUnordered(); } }