Package org.apache.druid.segment
Class VirtualColumns
java.lang.Object
org.apache.druid.segment.VirtualColumns
- All Implemented Interfaces:
Cacheable
Class allowing lookup and usage of virtual columns.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic classJsonIncludefilter forgetVirtualColumns(). -
Field Summary
Fields -
Method Summary
Modifier and TypeMethodDescriptionbooleancanVectorize(ColumnInspector columnInspector) static VirtualColumnscreate(List<VirtualColumn> virtualColumns) static VirtualColumnscreate(VirtualColumn... virtualColumns) booleanbooleanReturns true if a virtual column exists with a particular columnName.findEquivalent(VirtualColumn virtualColumn) Check if a virtual column is already defined which is the same as some other virtual column, ignoring output name, returning that virtual column if it exists, or null if there is no equivalent virtual column.static VirtualColumnsfromIterable(Iterable<VirtualColumn> virtualColumns) byte[]Get a byte array used as a cache key.getColumnCapabilitiesWithFallback(ColumnInspector inspector, String columnName) Get capabilities for the column "columnName".getIndexSupplier(String columnName, ColumnIndexSelector columnIndexSelector) Get theColumnIndexSupplierof the specified virtual column, with the assistance of aColumnSelectorto allow reading things from segments.getVirtualColumn(String columnName) inthashCode()booleanisEmpty()makeColumnValueSelector(String columnName, ColumnSelectorFactory selectorFactory, ColumnSelector columnSelector, ReadableOffset offset) Create a column value selector.makeDimensionSelector(DimensionSpec dimensionSpec, ColumnSelectorFactory selectorFactory, ColumnSelector columnSelector, ReadableOffset offset) Create a dimension (string) selector.makeMultiValueDimensionVectorSelector(DimensionSpec dimensionSpec, VectorColumnSelectorFactory factory, ColumnSelector columnSelector, ReadableVectorOffset offset) Create a multi value dimension vector (string) selector.makeSingleValueDimensionVectorSelector(DimensionSpec dimensionSpec, VectorColumnSelectorFactory factory, ColumnSelector columnSelector, ReadableVectorOffset offset) Create a single value dimension vector (string) selector.makeVectorObjectSelector(String columnName, VectorColumnSelectorFactory factory, ColumnSelector columnSelector, ReadableVectorOffset offset) Create a column vector object selector.makeVectorValueSelector(String columnName, VectorColumnSelectorFactory factory, ColumnSelector columnSelector, ReadableVectorOffset offset) Create a column vector value selector.static VirtualColumnsnullToEmpty(VirtualColumns virtualColumns) splitColumnName(String columnName) Split a dot-style columnName into the "main" columnName and the subColumn name after the dot.toString()wrap(ColumnSelectorFactory baseFactory) Creates aVirtualizedColumnSelectorFactorywhich can create column selectors forvirtualColumnsin addition to selectors for all physical columns in the underlying factory.wrapInspector(ColumnInspector inspector) Creates aVirtualizedColumnInspectorthat providesColumnCapabilitiesinformation for allvirtualColumnsin addition to the capabilities of all physical columns in the underlying inspector.
-
Field Details
-
EMPTY
-
-
Method Details
-
splitColumnName
Split a dot-style columnName into the "main" columnName and the subColumn name after the dot. Useful for columns that support dot notation.- Parameters:
columnName- columnName like "foo" or "foo.bar"- Returns:
- pair of main column name (will not be null) and subColumn name (may be null)
-
create
-
create
-
fromIterable
-
nullToEmpty
-
exists
Returns true if a virtual column exists with a particular columnName.- Parameters:
columnName- the column name- Returns:
- true or false
-
getVirtualColumn
-
findEquivalent
Check if a virtual column is already defined which is the same as some other virtual column, ignoring output name, returning that virtual column if it exists, or null if there is no equivalent virtual column. -
getIndexSupplier
@Nullable public ColumnIndexSupplier getIndexSupplier(String columnName, ColumnIndexSelector columnIndexSelector) Get theColumnIndexSupplierof the specified virtual column, with the assistance of aColumnSelectorto allow reading things from segments. Returns null if the virtual column wants to act like a missing column. ReturnsNoIndexesColumnIndexSupplier.getInstance()if the virtual column does not support indexes and wants cursor-based filtering.- Throws:
IllegalArgumentException- if the virtual column does not exist (seeexists(String)
-
makeDimensionSelector
public DimensionSelector makeDimensionSelector(DimensionSpec dimensionSpec, ColumnSelectorFactory selectorFactory, @Nullable ColumnSelector columnSelector, @Nullable ReadableOffset offset) Create a dimension (string) selector.- Parameters:
dimensionSpec- spec the column was referenced withselectorFactory- object for fetching underlying selectors.columnSelector- object for fetching underlying columns, if available.offset- offset to use with underlying columns. Must be provided if columnSelector is provided.- Throws:
IllegalArgumentException- if the virtual column does not exist (seeexists(String)
-
makeColumnValueSelector
public ColumnValueSelector<?> makeColumnValueSelector(String columnName, ColumnSelectorFactory selectorFactory, @Nullable ColumnSelector columnSelector, @Nullable ReadableOffset offset) Create a column value selector.- Parameters:
columnName- name the column was referenced with, which is useful if this column uses dot notation.selectorFactory- object for fetching underlying selectors.columnSelector- object for fetching underlying columns, if available.offset- offset to use with underlying columns. Must be provided if columnSelector is provided.- Throws:
IllegalArgumentException- if the virtual column does not exist (seeexists(String)
-
canVectorize
-
makeSingleValueDimensionVectorSelector
public SingleValueDimensionVectorSelector makeSingleValueDimensionVectorSelector(DimensionSpec dimensionSpec, VectorColumnSelectorFactory factory, ColumnSelector columnSelector, ReadableVectorOffset offset) Create a single value dimension vector (string) selector.- Parameters:
dimensionSpec- spec the column was referenced withfactory- object for fetching underlying selectorscolumnSelector- object for fetching underlying columnsoffset- offset to use with underlying columns- Throws:
IllegalArgumentException- if the virtual column does not exist (seeexists(String)
-
makeMultiValueDimensionVectorSelector
public MultiValueDimensionVectorSelector makeMultiValueDimensionVectorSelector(DimensionSpec dimensionSpec, VectorColumnSelectorFactory factory, ColumnSelector columnSelector, ReadableVectorOffset offset) Create a multi value dimension vector (string) selector.- Parameters:
dimensionSpec- spec the column was referenced withfactory- object for fetching underlying selectorscolumnSelector- object for fetching underlying columnsoffset- offset to use with underlying columns- Throws:
IllegalArgumentException- if the virtual column does not exist (seeexists(String)
-
makeVectorValueSelector
public VectorValueSelector makeVectorValueSelector(String columnName, VectorColumnSelectorFactory factory, ColumnSelector columnSelector, ReadableVectorOffset offset) Create a column vector value selector.- Parameters:
columnName- name the column was referenced withfactory- object for fetching underlying selectorscolumnSelector- object for fetching underlying columnsoffset- offset to use with underlying columns- Throws:
IllegalArgumentException- if the virtual column does not exist (seeexists(String)
-
makeVectorObjectSelector
public VectorObjectSelector makeVectorObjectSelector(String columnName, VectorColumnSelectorFactory factory, ColumnSelector columnSelector, ReadableVectorOffset offset) Create a column vector object selector.- Parameters:
columnName- name the column was referenced withfactory- object for fetching underlying selectorscolumnSelector- object for fetching underlying columnsoffset- offset to use with underlying columns- Throws:
IllegalArgumentException- if the virtual column does not exist (seeexists(String)
-
getColumnCapabilitiesWithFallback
@Nullable public ColumnCapabilities getColumnCapabilitiesWithFallback(ColumnInspector inspector, String columnName) Get capabilities for the column "columnName". If columnName is not a virtual column, delegates to the providedColumnInspector. -
getVirtualColumns
-
wrap
Creates aVirtualizedColumnSelectorFactorywhich can create column selectors forvirtualColumnsin addition to selectors for all physical columns in the underlying factory. -
wrapInspector
Creates aVirtualizedColumnInspectorthat providesColumnCapabilitiesinformation for allvirtualColumnsin addition to the capabilities of all physical columns in the underlying inspector. -
getCacheKey
public byte[] getCacheKey()Description copied from interface:CacheableGet a byte array used as a cache key.- Specified by:
getCacheKeyin interfaceCacheable- Returns:
- bytes to be used as cache key - or null if this object should not be cached.
-
isEmpty
public boolean isEmpty() -
getColumnNames
-
equals
-
hashCode
public int hashCode() -
toString
-