@Override public Aggregator factorize(final ColumnSelectorFactory metricFactory) { if (metricColumns == null) { // input is sketches, use merge aggregator final BaseObjectColumnValueSelector<ArrayOfDoublesSketch> selector = metricFactory .makeColumnValueSelector(fieldName); if (selector instanceof NilColumnValueSelector) { return new ArrayOfDoublesSketchNoOpAggregator(numberOfValues); } return new ArrayOfDoublesSketchMergeAggregator(selector, nominalEntries, numberOfValues); } // input is raw data (key and array of values), use build aggregator final DimensionSelector keySelector = metricFactory .makeDimensionSelector(new DefaultDimensionSpec(fieldName, fieldName)); if (DimensionSelector.isNilSelector(keySelector)) { return new ArrayOfDoublesSketchNoOpAggregator(numberOfValues); } final List<BaseDoubleColumnValueSelector> valueSelectors = new ArrayList<>(); for (final String column : metricColumns) { final BaseDoubleColumnValueSelector valueSelector = metricFactory.makeColumnValueSelector(column); valueSelectors.add(valueSelector); } return new ArrayOfDoublesSketchBuildAggregator(keySelector, valueSelectors, nominalEntries); }
if (DimensionSelector.isNilSelector(keySelector)) { return new ArrayOfDoublesSketchNoOpBufferAggregator(numberOfValues);
@Override public void updateSearchResultSet( String outputName, DimensionSelector selector, SearchQuerySpec searchQuerySpec, int limit, final Object2IntRBTreeMap<SearchHit> set ) { if (!DimensionSelector.isNilSelector(selector)) { final IndexedInts row = selector.getRow(); for (int i = 0, rowSize = row.size(); i < rowSize; ++i) { final String dimVal = selector.lookupName(row.get(i)); if (searchQuerySpec.accept(dimVal)) { set.addTo(new SearchHit(outputName, dimVal), 1); if (set.size() >= limit) { return; } } } } } }