public TopNLexicographicResultBuilder( DateTime timestamp, DimensionSpec dimSpec, int threshold, String previousStop, final Comparator comparator, List<AggregatorFactory> aggFactories ) { this.timestamp = timestamp; this.dimSpec = dimSpec; this.previousStop = previousStop; this.comparator = comparator; this.aggFactoryNames = TopNQueryQueryToolChest.extractFactoryName(aggFactories); this.threshold = threshold; this.pQueue = new PriorityQueue<>( threshold + 1, (o1, o2) -> comparator.compare(o2.getDimValue(), o1.getDimValue()) ); }
public TopNNumericResultBuilder( DateTime timestamp, DimensionSpec dimSpec, String metricName, int threshold, final Comparator comparator, List<AggregatorFactory> aggFactories, List<PostAggregator> postAggs ) { this.timestamp = timestamp; this.dimSpec = dimSpec; this.metricName = metricName; this.aggFactoryNames = TopNQueryQueryToolChest.extractFactoryName(aggFactories); this.postAggs = AggregatorUtil.pruneDependentPostAgg(postAggs, this.metricName); this.threshold = threshold; this.metricComparator = comparator; final Comparator<DimValHolder> dimValHolderComparator = (d1, d2) -> { //noinspection unchecked int retVal = metricComparator.compare(d1.getTopNMetricVal(), d2.getTopNMetricVal()); if (retVal == 0) { retVal = dimValueComparator.compare(d1.getDimValue(), d2.getDimValue()); } return retVal; }; // The logic in addEntry first adds, then removes if needed. So it can at any point have up to threshold + 1 entries. pQueue = new PriorityQueue<>(this.threshold + 1, dimValHolderComparator); }
private final AggregatorFactory[] aggregatorFactories = query.getAggregatorSpecs() .toArray(new AggregatorFactory[0]); private final String[] aggFactoryNames = extractFactoryName(query.getAggregatorSpecs());
private final AggregatorFactory[] aggregatorFactories = query.getAggregatorSpecs() .toArray(new AggregatorFactory[0]); private final String[] aggFactoryNames = extractFactoryName(query.getAggregatorSpecs()); private final PostAggregator[] postAggregators = query.getPostAggregatorSpecs().toArray(new PostAggregator[0]);
public TopNLexicographicResultBuilder( DateTime timestamp, DimensionSpec dimSpec, int threshold, String previousStop, final Comparator comparator, List<AggregatorFactory> aggFactories ) { this.timestamp = timestamp; this.dimSpec = dimSpec; this.previousStop = previousStop; this.comparator = comparator; this.aggFactoryNames = TopNQueryQueryToolChest.extractFactoryName(aggFactories); this.threshold = threshold; this.pQueue = new PriorityQueue<>( threshold + 1, (o1, o2) -> comparator.compare(o2.getDimValue(), o1.getDimValue()) ); }
public TopNNumericResultBuilder( DateTime timestamp, DimensionSpec dimSpec, String metricName, int threshold, final Comparator comparator, List<AggregatorFactory> aggFactories, List<PostAggregator> postAggs ) { this.timestamp = timestamp; this.dimSpec = dimSpec; this.metricName = metricName; this.aggFactoryNames = TopNQueryQueryToolChest.extractFactoryName(aggFactories); this.postAggs = AggregatorUtil.pruneDependentPostAgg(postAggs, this.metricName); this.threshold = threshold; this.metricComparator = comparator; final Comparator<DimValHolder> dimValHolderComparator = (d1, d2) -> { //noinspection unchecked int retVal = metricComparator.compare(d1.getTopNMetricVal(), d2.getTopNMetricVal()); if (retVal == 0) { retVal = dimValueComparator.compare(d1.getDimValue(), d2.getDimValue()); } return retVal; }; // The logic in addEntry first adds, then removes if needed. So it can at any point have up to threshold + 1 entries. pQueue = new PriorityQueue<>(this.threshold + 1, dimValHolderComparator); }
private final AggregatorFactory[] aggregatorFactories = query.getAggregatorSpecs() .toArray(new AggregatorFactory[0]); private final String[] aggFactoryNames = extractFactoryName(query.getAggregatorSpecs());
private final AggregatorFactory[] aggregatorFactories = query.getAggregatorSpecs() .toArray(new AggregatorFactory[0]); private final String[] aggFactoryNames = extractFactoryName(query.getAggregatorSpecs()); private final PostAggregator[] postAggregators = query.getPostAggregatorSpecs().toArray(new PostAggregator[0]);