@Override @Nullable public Comparable getMinValue(String dimension) { ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder != null && columnHolder.getCapabilities().hasBitmapIndexes()) { BitmapIndex bitmap = columnHolder.getBitmapIndex(); return bitmap.getCardinality() > 0 ? bitmap.getValue(0) : null; } return null; }
@Override public String getColumnTypeName(String columnName) { final ColumnHolder columnHolder = index.getColumnHolder(columnName); try (final BaseColumn col = columnHolder.getColumn()) { if (col instanceof ComplexColumn) { return ((ComplexColumn) col).getTypeName(); } else { return columnHolder.getCapabilities().getType().toString(); } } catch (IOException e) { throw new UncheckedIOException(e); } }
@Override public int getNumRows() { return columns.get(ColumnHolder.TIME_COLUMN_NAME).getLength(); }
@Override public ImmutableRTree getSpatialIndex(String dimension) { if (isVirtualColumn(dimension)) { return ImmutableRTree.empty(); } final ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder == null || !columnHolder.getCapabilities().hasSpatialIndexes()) { return ImmutableRTree.empty(); } return columnHolder.getSpatialIndex().getRTree(); }
@Override public ColumnCapabilities getCapabilities(String column) { return input.getColumnHolder(column).getCapabilities(); }
@VisibleForTesting BitmapValues getBitmapIndex(String dimension, String value) { final ColumnHolder columnHolder = input.getColumnHolder(dimension); if (columnHolder == null) { return BitmapValues.EMPTY; } final BitmapIndex bitmaps = columnHolder.getBitmapIndex(); if (bitmaps == null) { return BitmapValues.EMPTY; } return new ImmutableBitmapValues(bitmaps.getBitmap(bitmaps.getIndex(value))); }
@Override public int getNumRows() { try (final NumericColumn column = (NumericColumn) index.getColumnHolder(ColumnHolder.TIME_COLUMN_NAME).getColumn()) { return column.length(); } }
(DictionaryEncodedColumn<String>) columnHolder.getColumn()) { final BitmapIndex bitmapIndex = columnHolder.getBitmapIndex();
@JsonCreator public DoubleLastAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName ) { Preconditions.checkNotNull(name, "Must have a valid, non-null aggregator name"); Preconditions.checkNotNull(fieldName, "Must have a valid, non-null fieldName"); this.name = name; this.fieldName = fieldName; this.storeDoubleAsFloat = ColumnHolder.storeDoubleAsFloat(); }
rowMetricSelectors = metricNames .stream() .map(metric -> input.getColumnHolder(metric).makeNewSettableColumnValueSelector()) .toArray(SettableColumnValueSelector[]::new); markedMetricSelectors = metricNames .stream() .map(metric -> input.getColumnHolder(metric).makeNewSettableColumnValueSelector()) .toArray(SettableColumnValueSelector[]::new); markedRowPointer = new TimeAndDimsPointer(
@Nullable static ColumnCapabilities getColumnCapabilities(ColumnSelector index, String columnName) { ColumnHolder columnHolder = index.getColumnHolder(columnName); if (columnHolder == null) { return null; } return columnHolder.getCapabilities(); }
private static long computeTotalCard(final QueryableIndex index, final Iterable<DimensionSpec> dimensionSpecs) { long totalCard = 0; for (DimensionSpec dimension : dimensionSpecs) { final ColumnHolder columnHolder = index.getColumnHolder(dimension.getDimension()); if (columnHolder != null) { final BitmapIndex bitmapIndex = columnHolder.getBitmapIndex(); if (bitmapIndex != null) { totalCard += bitmapIndex.getCardinality(); } } } return totalCard; } }
@Override public int getDimensionCardinality(String dimension) { ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder == null) { return 0; } try (BaseColumn col = columnHolder.getColumn()) { if (!(col instanceof DictionaryEncodedColumn)) { return Integer.MAX_VALUE; } return ((DictionaryEncodedColumn) col).getCardinality(); } catch (IOException e) { throw new UncheckedIOException(e); } }
@Override public ImmutableRTree getSpatialIndex(String dimension) { if (isVirtualColumn(dimension)) { return ImmutableRTree.empty(); } final ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder == null || !columnHolder.getCapabilities().hasSpatialIndexes()) { return ImmutableRTree.empty(); } return columnHolder.getSpatialIndex().getRTree(); }
@JsonCreator public DoubleFirstAggregatorFactory( @JsonProperty("name") String name, @JsonProperty("fieldName") final String fieldName ) { Preconditions.checkNotNull(name, "Must have a valid, non-null aggregator name"); Preconditions.checkNotNull(fieldName, "Must have a valid, non-null fieldName"); this.name = name; this.fieldName = fieldName; this.storeDoubleAsFloat = ColumnHolder.storeDoubleAsFloat(); }
rowMetricSelectors = metricNames .stream() .map(metric -> input.getColumnHolder(metric).makeNewSettableColumnValueSelector()) .toArray(SettableColumnValueSelector[]::new); markedMetricSelectors = metricNames .stream() .map(metric -> input.getColumnHolder(metric).makeNewSettableColumnValueSelector()) .toArray(SettableColumnValueSelector[]::new); markedRowPointer = new TimeAndDimsPointer(
@Override @Nullable public Comparable getMaxValue(String dimension) { ColumnHolder columnHolder = index.getColumnHolder(dimension); if (columnHolder != null && columnHolder.getCapabilities().hasBitmapIndexes()) { BitmapIndex bitmap = columnHolder.getBitmapIndex(); return bitmap.getCardinality() > 0 ? bitmap.getValue(bitmap.getCardinality() - 1) : null; } return null; }
@Override public String getMetricType(String metric) { final ColumnHolder columnHolder = input.getColumnHolder(metric); final ValueType type = columnHolder.getCapabilities().getType(); switch (type) { case FLOAT: return "float"; case LONG: return "long"; case DOUBLE: return "double"; case COMPLEX: { try (ComplexColumn complexColumn = (ComplexColumn) columnHolder.getColumn()) { return complexColumn.getTypeName(); } } default: throw new ISE("Unknown type[%s]", type); } }
private void initDimensionHandlers() { for (String dim : availableDimensions) { ColumnCapabilities capabilities = getColumnHolder(dim).getCapabilities(); DimensionHandler handler = DimensionHandlerUtils.getHandlerFromCapabilities(dim, capabilities, null); dimensionHandlers.put(dim, handler); } } }
@Override public BitmapValues getBitmapValues(String dimension, int dictId) { final ColumnHolder columnHolder = input.getColumnHolder(dimension); if (columnHolder == null) { return BitmapValues.EMPTY; } final BitmapIndex bitmaps = columnHolder.getBitmapIndex(); if (bitmaps == null) { return BitmapValues.EMPTY; } if (dictId >= 0) { return new ImmutableBitmapValues(bitmaps.getBitmap(dictId)); } else { return BitmapValues.EMPTY; } }