use of org.apache.druid.segment.DimensionSelector in project druid by druid-io.
the class ArrayOfDoublesSketchAggregatorFactory method factorize.
@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 NoopArrayOfDoublesSketchAggregator(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 NoopArrayOfDoublesSketchAggregator(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);
}
use of org.apache.druid.segment.DimensionSelector in project druid by druid-io.
the class BloomFilterAggregatorTest method testCombineValues.
@Test
public void testCombineValues() throws IOException {
DimensionSelector dimSelector1 = new CardinalityAggregatorTest.TestDimensionSelector(VALUES1, null);
DimensionSelector dimSelector2 = new CardinalityAggregatorTest.TestDimensionSelector(VALUES2, null);
StringBloomFilterAggregator agg1 = new StringBloomFilterAggregator(dimSelector1, MAX_NUM_VALUES, true);
StringBloomFilterAggregator agg2 = new StringBloomFilterAggregator(dimSelector2, MAX_NUM_VALUES, true);
for (int i = 0; i < VALUES1.size(); ++i) {
aggregateDimension(Collections.singletonList(dimSelector1), agg1);
}
for (int i = 0; i < VALUES2.size(); ++i) {
aggregateDimension(Collections.singletonList(dimSelector2), agg2);
}
BloomKFilter combined = BloomKFilter.deserialize((ByteBuffer) valueAggregatorFactory.finalizeComputation(valueAggregatorFactory.combine(agg1.get(), agg2.get())));
String serialized = filterToString(combined);
Assert.assertEquals(serializedCombinedFilter, serialized);
}
use of org.apache.druid.segment.DimensionSelector in project druid by druid-io.
the class BloomFilterAggregatorTest method testAggregateValues.
@Test
public void testAggregateValues() throws IOException {
DimensionSelector dimSelector = new CardinalityAggregatorTest.TestDimensionSelector(VALUES1, null);
StringBloomFilterAggregator agg = new StringBloomFilterAggregator(dimSelector, MAX_NUM_VALUES, true);
for (int i = 0; i < VALUES1.size(); ++i) {
aggregateDimension(Collections.singletonList(dimSelector), agg);
}
BloomKFilter bloomKFilter = BloomKFilter.deserialize((ByteBuffer) valueAggregatorFactory.finalizeComputation(agg.get()));
String serialized = filterToString(bloomKFilter);
Assert.assertEquals(serializedFilter1, serialized);
}
use of org.apache.druid.segment.DimensionSelector in project druid by druid-io.
the class IncrementalIndexReadBenchmark method read.
@Benchmark
@BenchmarkMode(Mode.AverageTime)
@OutputTimeUnit(TimeUnit.MICROSECONDS)
public void read(Blackhole blackhole) {
IncrementalIndexStorageAdapter sa = new IncrementalIndexStorageAdapter(incIndex);
Sequence<Cursor> cursors = makeCursors(sa, null);
Cursor cursor = cursors.limit(1).toList().get(0);
List<DimensionSelector> selectors = new ArrayList<>();
selectors.add(makeDimensionSelector(cursor, "dimSequential"));
selectors.add(makeDimensionSelector(cursor, "dimZipf"));
selectors.add(makeDimensionSelector(cursor, "dimUniform"));
selectors.add(makeDimensionSelector(cursor, "dimSequentialHalfNull"));
cursor.reset();
while (!cursor.isDone()) {
for (DimensionSelector selector : selectors) {
IndexedInts row = selector.getRow();
blackhole.consume(selector.lookupName(row.get(0)));
}
cursor.advance();
}
}
use of org.apache.druid.segment.DimensionSelector in project druid by druid-io.
the class ExpressionSelectorBenchmark method timeFloorUsingExtractionFn.
@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);
}
Aggregations