public abstract class NullableNumericAggregatorFactory<T extends BaseNullableColumnValueSelector> extends AggregatorFactory
Aggregator
, BufferAggregator
, VectorAggregator
, and
AggregateCombiner
to support nullable aggregations. The result of this aggregator will be null if all the
values to be aggregated are null values, or if no values are aggregated at all. If any of the values are non-null,
the result will be the aggregated value of the non-null values.
This superclass should only be extended by aggregators that read primitive numbers. It implements logic that is
not valid for non-numeric selector methods such as BaseObjectColumnValueSelector.getObject()
.Constructor and Description |
---|
NullableNumericAggregatorFactory() |
Modifier and Type | Method and Description |
---|---|
Aggregator |
factorize(ColumnSelectorFactory columnSelectorFactory) |
protected abstract Aggregator |
factorize(ColumnSelectorFactory columnSelectorFactory,
T selector)
Creates an
Aggregator to aggregate values from several rows, by using the provided selector. |
BufferAggregator |
factorizeBuffered(ColumnSelectorFactory columnSelectorFactory) |
protected abstract BufferAggregator |
factorizeBuffered(ColumnSelectorFactory columnSelectorFactory,
T selector)
Creates an
BufferAggregator to aggregate values from several rows into a ByteBuffer. |
VectorAggregator |
factorizeVector(VectorColumnSelectorFactory columnSelectorFactory)
Create a VectorAggregator based on the provided column selector factory.
|
protected VectorAggregator |
factorizeVector(VectorColumnSelectorFactory columnSelectorFactory,
VectorValueSelector selector)
Creates a
VectorAggregator to aggregate values from several rows into a ByteBuffer. |
ValueType |
getFinalizedType()
Get the type for the final form of this this aggregator, i.e.
|
int |
getMaxIntermediateSizeWithNulls()
Returns the maximum size that this aggregator will require in bytes for intermediate storage of results.
|
AggregateCombiner |
makeNullableAggregateCombiner()
Creates an
AggregateCombiner which supports nullability. |
protected abstract T |
selector(ColumnSelectorFactory columnSelectorFactory)
Creates a
ColumnValueSelector for the aggregated column. |
protected VectorValueSelector |
vectorSelector(VectorColumnSelectorFactory columnSelectorFactory)
Creates a
VectorValueSelector for the aggregated column. |
canVectorize, combine, deserialize, finalizeComputation, getCombiningFactory, getComparator, getComplexTypeName, getMaxIntermediateSize, getMergingFactory, getName, getRequiredColumns, getType, makeAggregateCombiner, mergeAggregators, optimizeForSegment, requiredFields
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
getCacheKey
public final Aggregator factorize(ColumnSelectorFactory columnSelectorFactory)
factorize
in class AggregatorFactory
public final BufferAggregator factorizeBuffered(ColumnSelectorFactory columnSelectorFactory)
factorizeBuffered
in class AggregatorFactory
public final VectorAggregator factorizeVector(VectorColumnSelectorFactory columnSelectorFactory)
AggregatorFactory
factorizeVector
in class AggregatorFactory
public final AggregateCombiner makeNullableAggregateCombiner()
AggregatorFactory
AggregateCombiner
which supports nullability.
Implementations of AggregatorFactory
which need to Support Nullable Aggregations are encouraged
to extend NullableNumericAggregatorFactory
instead of overriding this method.
Default implementation calls AggregatorFactory.makeAggregateCombiner()
for backwards compatibility.makeNullableAggregateCombiner
in class AggregatorFactory
AggregateCombiner
,
NullableNumericAggregatorFactory
public final int getMaxIntermediateSizeWithNulls()
AggregatorFactory
AggregatorFactory
which need to Support Nullable Aggregations are encouraged
to extend NullableNumericAggregatorFactory
instead of overriding this method.
Default implementation calls AggregatorFactory.makeAggregateCombiner()
for backwards compatibility.getMaxIntermediateSizeWithNulls
in class AggregatorFactory
protected abstract T selector(ColumnSelectorFactory columnSelectorFactory)
ColumnValueSelector
for the aggregated column.ColumnValueSelector
protected VectorValueSelector vectorSelector(VectorColumnSelectorFactory columnSelectorFactory)
VectorValueSelector
for the aggregated column.VectorValueSelector
protected abstract Aggregator factorize(ColumnSelectorFactory columnSelectorFactory, T selector)
Aggregator
to aggregate values from several rows, by using the provided selector.columnSelectorFactory
- metricFactoryselector
- ColumnValueSelector
for the column to aggregate.Aggregator
protected abstract BufferAggregator factorizeBuffered(ColumnSelectorFactory columnSelectorFactory, T selector)
BufferAggregator
to aggregate values from several rows into a ByteBuffer.columnSelectorFactory
- columnSelectorFactory in case any other columns are needed.selector
- ColumnValueSelector
for the column to aggregate.BufferAggregator
protected VectorAggregator factorizeVector(VectorColumnSelectorFactory columnSelectorFactory, VectorValueSelector selector)
VectorAggregator
to aggregate values from several rows into a ByteBuffer.columnSelectorFactory
- columnSelectorFactory in case any other columns are needed.selector
- VectorValueSelector
for the column to aggregate.BufferAggregator
public ValueType getFinalizedType()
AggregatorFactory
AggregatorFactory.finalizeComputation(java.lang.Object)
. This may be the same as or different than the types expected in AggregatorFactory.deserialize(java.lang.Object)
and AggregatorFactory.combine(java.lang.Object, java.lang.Object)
.
Refer to the ValueType
javadocs for details on the implications of choosing a type.getFinalizedType
in class AggregatorFactory
Copyright © 2011–2021 The Apache Software Foundation. All rights reserved.