@Override public DimensionSelector makeDimensionSelector(DimensionSpec dimensionSpec) { return delegate.makeDimensionSelector(dimensionSpec); }
private DimensionSelector makeDimensionSelector(final ColumnSelectorFactory columnFactory) { return columnFactory.makeDimensionSelector(new DefaultDimensionSpec(fieldName, fieldName)); }
private static DimensionSelector makeDimensionSelector(Cursor cursor, String name) { return cursor.getColumnSelectorFactory().makeDimensionSelector(new DefaultDimensionSpec(name, null)); } }
@Override public DimensionSelector makeDimensionSelector(DimensionSpec dimensionSpec) { if (virtualColumns.exists(dimensionSpec.getDimension())) { return virtualColumns.makeDimensionSelector(dimensionSpec, baseFactory); } else { return baseFactory.makeDimensionSelector(dimensionSpec); } }
final DimensionSelector selector = cursor.getColumnSelectorFactory().makeDimensionSelector(dimSpec); if (selector.getValueCardinality() == DimensionSelector.CARDINALITY_UNKNOWN) { throw new UnsupportedOperationException(
@Override public DimensionSelector makeDimensionSelector(DimensionSpec dimensionSpec, ColumnSelectorFactory factory) { final DimensionSelector keySelector = factory.makeDimensionSelector(DefaultDimensionSpec.of(keyDimension)); final DimensionSelector valueSelector = factory.makeDimensionSelector(DefaultDimensionSpec.of(valueDimension)); final String subColumnName = VirtualColumns.splitColumnName(dimensionSpec.getDimension()).rhs; if (subColumnName == null) { return dimensionSpec.decorate(new MapTypeMapVirtualColumnDimensionSelector(keySelector, valueSelector)); } else { return dimensionSpec.decorate( new StringTypeMapVirtualColumnDimensionSelector(keySelector, valueSelector, subColumnName) ); } }
@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); }
private static ColumnValueSelector getColumnValueSelectorFromDimensionSpec( DimensionSpec dimSpec, ColumnSelectorFactory columnSelectorFactory ) { String dimName = dimSpec.getDimension(); ColumnCapabilities capabilities = columnSelectorFactory.getColumnCapabilities(dimName); capabilities = getEffectiveCapabilities(dimSpec, capabilities); switch (capabilities.getType()) { case STRING: return columnSelectorFactory.makeDimensionSelector(dimSpec); default: return columnSelectorFactory.makeColumnValueSelector(dimSpec.getDimension()); } }
private void readCursors(Sequence<Cursor> cursors, Blackhole blackhole) { final Sequence<Void> voids = Sequences.map( cursors, input -> { List<DimensionSelector> selectors = new ArrayList<>(); selectors.add( input.getColumnSelectorFactory().makeDimensionSelector(new DefaultDimensionSpec("dimSequential", null)) ); while (!input.isDone()) { for (DimensionSelector selector : selectors) { IndexedInts row = selector.getRow(); blackhole.consume(selector.lookupName(row.get(0))); } input.advance(); } return null; } ); blackhole.consume(voids.toList()); }
@Override public Long accumulate(Long accumulated, Cursor cursor) { DimensionSelector selector = cursor .getColumnSelectorFactory() .makeDimensionSelector(new DefaultDimensionSpec(columnName, columnName)); if (selector == null) { return accumulated; } long current = accumulated; while (!cursor.isDone()) { final IndexedInts row = selector.getRow(); for (int i = 0, rowSize = row.size(); i < rowSize; ++i) { final String dimVal = selector.lookupName(row.get(i)); if (dimVal != null && !dimVal.isEmpty()) { current += StringUtils.estimatedBinaryLengthAsUTF8(dimVal); } } cursor.advance(); } return current; } }
.makeDimensionSelector(new DefaultDimensionSpec(fieldName, fieldName)); if (DimensionSelector.isNilSelector(keySelector)) { return new ArrayOfDoublesSketchNoOpBufferAggregator(numberOfValues);
@Override public List<String> apply(Cursor input) { final DimensionSelector selector = input .getColumnSelectorFactory() .makeDimensionSelector(new DefaultDimensionSpec(selectColumn, selectColumn)); final List<String> values = new ArrayList<>(); while (!input.isDone()) { IndexedInts row = selector.getRow(); Preconditions.checkState(row.size() == 1); values.add(selector.lookupName(row.get(0))); input.advance(); } return values; } }
@Override public List<String> apply(Cursor input) { final DimensionSelector selector = input .getColumnSelectorFactory() .makeDimensionSelector(new DefaultDimensionSpec(selectColumn, selectColumn)); final List<String> values = new ArrayList<>(); while (!input.isDone()) { IndexedInts row = selector.getRow(); Preconditions.checkState(row.size() == 1); values.add(selector.lookupName(row.get(0))); input.advance(); } return values; } }
final DimensionSelector selector = cursor.getColumnSelectorFactory().makeDimensionSelector( DefaultDimensionSpec.of("v") );
final DimensionSelector selector = cursor .getColumnSelectorFactory() .makeDimensionSelector(new DefaultDimensionSpec("v", "v", ValueType.STRING));
@Override public Aggregator factorize(ColumnSelectorFactory columnFactory) { BloomKFilter filter = new BloomKFilter(maxNumEntries); ColumnCapabilities capabilities = columnFactory.getColumnCapabilities(field.getDimension()); if (capabilities == null) { BaseNullableColumnValueSelector selector = columnFactory.makeColumnValueSelector(field.getDimension()); if (selector instanceof NilColumnValueSelector) { // BloomKFilter must be the same size so we cannot use a constant for the empty agg return new EmptyBloomFilterAggregator(filter); } throw new IAE( "Cannot create bloom filter buffer aggregator for column selector type [%s]", selector.getClass().getName() ); } ValueType type = capabilities.getType(); switch (type) { case STRING: return new StringBloomFilterAggregator(columnFactory.makeDimensionSelector(field), filter); case LONG: return new LongBloomFilterAggregator(columnFactory.makeColumnValueSelector(field.getDimension()), filter); case FLOAT: return new FloatBloomFilterAggregator(columnFactory.makeColumnValueSelector(field.getDimension()), filter); case DOUBLE: return new DoubleBloomFilterAggregator(columnFactory.makeColumnValueSelector(field.getDimension()), filter); default: throw new IAE("Cannot create bloom filter aggregator for invalid column type [%s]", type); } }
switch (type) { case STRING: return new StringBloomFilterBufferAggregator(columnFactory.makeDimensionSelector(field), maxNumEntries); case LONG: return new LongBloomFilterBufferAggregator(
@Benchmark public void strlenUsingExtractionFn(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.EMPTY, Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final DimensionSelector selector = cursor .getColumnSelectorFactory() .makeDimensionSelector(new ExtractionDimensionSpec("x", "v", StrlenExtractionFn.instance())); consumeDimension(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
@Benchmark public void timeFloorUsingExtractionFn(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.EMPTY, Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final DimensionSelector selector = cursor .getColumnSelectorFactory() .makeDimensionSelector( new ExtractionDimensionSpec( ColumnHolder.TIME_COLUMN_NAME, "v", new TimeFormatExtractionFn(null, null, null, Granularities.HOUR, true) ) ); consumeDimension(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }
@Benchmark public void timeFormatUsingExtractionFn(Blackhole blackhole) { final Sequence<Cursor> cursors = new QueryableIndexStorageAdapter(index).makeCursors( null, index.getDataInterval(), VirtualColumns.EMPTY, Granularities.ALL, false, null ); final List<?> results = cursors .map(cursor -> { final DimensionSelector selector = cursor .getColumnSelectorFactory() .makeDimensionSelector( new ExtractionDimensionSpec( ColumnHolder.TIME_COLUMN_NAME, "v", new TimeFormatExtractionFn("yyyy-MM-dd", null, null, null, false) ) ); consumeDimension(cursor, selector, blackhole); return null; }) .toList(); blackhole.consume(results); }