public class SingleScanTimeDimensionSelector extends Object implements DimensionSelector
DimensionSelector for projected time columns
- it assumes time values are scanned once and values are grouped together
(i.e. we never revisit a timestamp we have seen before, unless it is the same as the last accessed one)
- it also applies and caches extraction function values at the DimensionSelector level to speed things upDimensionSelector.NullDimensionSelectorHolderCARDINALITY_UNKNOWNEMPTY_ARRAY| Constructor and Description |
|---|
SingleScanTimeDimensionSelector(BaseLongColumnValueSelector selector,
ExtractionFn extractionFn,
boolean descending) |
| Modifier and Type | Method and Description |
|---|---|
Class<String> |
classOfObject() |
String |
getObject() |
IndexedInts |
getRow()
Returns the indexed values at the current position in this DimensionSelector.
|
int |
getValueCardinality()
Value cardinality is the cardinality of the different occurring values.
|
IdLookup |
idLookup()
Returns
IdLookup if available for this DimensionSelector, or null. |
void |
inspectRuntimeShape(RuntimeShapeInspector inspector)
Implementations of this method should call
inspector.visit() with all fields of this class, which meet two
conditions:
1. |
String |
lookupName(int id)
The Name is the String name of the actual field.
|
ValueMatcher |
makeValueMatcher(com.google.common.base.Predicate<String> predicate) |
ValueMatcher |
makeValueMatcher(String value) |
boolean |
nameLookupPossibleInAdvance()
Returns true if it is possible to
DimensionSelector.lookupName(int) by ids from 0 to DimensionSelector.getValueCardinality()
before the rows with those ids are returned. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitconstant, constant, defaultGetObject, getDouble, getFloat, getLong, isNilSelector, isNullpublic SingleScanTimeDimensionSelector(BaseLongColumnValueSelector selector, @Nullable ExtractionFn extractionFn, boolean descending)
public IndexedInts getRow()
DimensionSelectorIndexedInts object could generally be reused inside the implementation of
DimensionSelector, i. e. this method could always return the same object for the same selector. Users
of this API, such as Aggregator.aggregate(), BufferAggregator.aggregate(java.nio.ByteBuffer, int), AggregateCombiner.reset(org.apache.druid.segment.ColumnValueSelector),
AggregateCombiner.fold(org.apache.druid.segment.ColumnValueSelector) should be prepared for that and not storing the object
returned from this method in their state, assuming that the object will remain unchanged even when the position of
the selector changes. This may not be the case.getRow in interface DimensionSelectorpublic ValueMatcher makeValueMatcher(@Nullable String value)
makeValueMatcher in interface DimensionSelectorvalue - nullable dimension valuepublic ValueMatcher makeValueMatcher(com.google.common.base.Predicate<String> predicate)
makeValueMatcher in interface DimensionSelectorpublic int getValueCardinality()
DimensionSelectorgetValueCardinality in interface DimensionSelectorpublic String lookupName(int id)
DimensionSelectorlookupName in interface DimensionSelectorid - id to lookup the field name forpublic boolean nameLookupPossibleInAdvance()
DimensionSelectorDimensionSelector.lookupName(int) by ids from 0 to DimensionSelector.getValueCardinality()
before the rows with those ids are returned.
Returns false if DimensionSelector.lookupName(int) could be called with ids, returned from the most recent call of DimensionSelector.getRow() on this DimensionSelector, but not earlier. If DimensionSelector.getValueCardinality() of this DimensionSelector
additionally returns DimensionSelector.CARDINALITY_UNKNOWN, lookupName() couldn't be called with ids, returned by
not the most recent call of DimensionSelector.getRow(), i. e. names for ids couldn't be looked up "later". If DimensionSelector.getValueCardinality() returns a non-negative number, lookupName() could be called with any ids, returned
from #getRow() since the creation of this DimensionSelector.
If DimensionSelector.lookupName(int) is called with an ineligible id, result is undefined: exception could be thrown, or
null returned, or some other random value.
nameLookupPossibleInAdvance in interface DimensionSelector@Nullable public IdLookup idLookup()
DimensionSelectorIdLookup if available for this DimensionSelector, or null.idLookup in interface DimensionSelector@Nullable public String getObject()
getObject in interface BaseObjectColumnValueSelector<Object>public Class<String> classOfObject()
classOfObject in interface BaseObjectColumnValueSelector<Object>public void inspectRuntimeShape(RuntimeShapeInspector inspector)
HotLoopCalleeinspector.visit() with all fields of this class, which meet two
conditions:
1. They are used in methods of this class, annotated with CalledFromHotLoop
2. They are either:
a. Nullable objects
b. Instances of HotLoopCallee
c. Objects, which don't always have a specific class in runtime. For example, a field of type Set could be HashSet or TreeSet in runtime, depending on how
this instance (the instance on which inspectRuntimeShape() is called) is configured.
d. ByteBuffer or similar objects, where byte order matters
e. boolean flags, affecting branch taking
f. Arrays of objects, meeting any of conditions a-e.inspectRuntimeShape in interface HotLoopCalleeCopyright © 2011–2019 The Apache Software Foundation. All rights reserved.