Class FirstValueAccumulator
- java.lang.Object
-
- org.apache.iotdb.db.mpp.aggregation.FirstValueAccumulator
-
- All Implemented Interfaces:
Accumulator
- Direct Known Subclasses:
FirstValueDescAccumulator
public class FirstValueAccumulator extends java.lang.Object implements Accumulator
-
-
Field Summary
Fields Modifier and Type Field Description protected org.apache.iotdb.tsfile.utils.TsPrimitiveTypefirstValueprotected booleanhasCandidateResultprotected longminTimeprotected org.apache.iotdb.tsfile.file.metadata.enums.TSDataTypeseriesDataType
-
Constructor Summary
Constructors Constructor Description FirstValueAccumulator(org.apache.iotdb.tsfile.file.metadata.enums.TSDataType seriesDataType)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected intaddBinaryInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)protected intaddBooleanInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)protected intaddDoubleInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)protected intaddFloatInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)intaddInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)Column should be like: | Time | Value |voidaddIntermediate(org.apache.iotdb.tsfile.read.common.block.column.Column[] partialResult)For aggregation function like COUNT, SUM, partialResult should be single; But for AVG, last_value, it should be double column with dictionary order.protected intaddIntInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)protected intaddLongInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)voidaddStatistics(org.apache.iotdb.tsfile.file.metadata.statistics.Statistics statistics)This method can only be used in seriesAggregateScanOperator, it will use different statistics based on the type of Accumulator.org.apache.iotdb.tsfile.file.metadata.enums.TSDataTypegetFinalType()org.apache.iotdb.tsfile.file.metadata.enums.TSDataType[]getIntermediateType()booleanhasFinalResult()This method can only be used in seriesAggregateScanOperator.voidoutputFinal(org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder columnBuilder)Final result is single column for any aggregation function.voidoutputIntermediate(org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder[] columnBuilders)For aggregation function like COUNT, SUM, partialResult should be single, so its output column is single too; But for AVG(COUNT and SUM), LAST_VALUE(LAST_VALUE and MAX_TIME), the output columns should be double in dictionary order.voidreset()voidsetFinal(org.apache.iotdb.tsfile.read.common.block.column.Column finalResult)Attention: setFinal should be invoked only once, and addInput() and addIntermediate() are not allowed again.protected voidupdateBinaryFirstValue(org.apache.iotdb.tsfile.utils.Binary value, long curTime)protected voidupdateBooleanFirstValue(boolean value, long curTime)protected voidupdateDoubleFirstValue(double value, long curTime)protected voidupdateFloatFirstValue(float value, long curTime)protected voidupdateIntFirstValue(int value, long curTime)protected voidupdateLongFirstValue(long value, long curTime)
-
-
-
Method Detail
-
addInput
public int addInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)Description copied from interface:AccumulatorColumn should be like: | Time | Value |Return the last read row index of current timeColumn
- Specified by:
addInputin interfaceAccumulator
-
addIntermediate
public void addIntermediate(org.apache.iotdb.tsfile.read.common.block.column.Column[] partialResult)
Description copied from interface:AccumulatorFor aggregation function like COUNT, SUM, partialResult should be single; But for AVG, last_value, it should be double column with dictionary order.- Specified by:
addIntermediatein interfaceAccumulator
-
addStatistics
public void addStatistics(org.apache.iotdb.tsfile.file.metadata.statistics.Statistics statistics)
Description copied from interface:AccumulatorThis method can only be used in seriesAggregateScanOperator, it will use different statistics based on the type of Accumulator.- Specified by:
addStatisticsin interfaceAccumulator
-
setFinal
public void setFinal(org.apache.iotdb.tsfile.read.common.block.column.Column finalResult)
Description copied from interface:AccumulatorAttention: setFinal should be invoked only once, and addInput() and addIntermediate() are not allowed again.- Specified by:
setFinalin interfaceAccumulator
-
outputIntermediate
public void outputIntermediate(org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder[] columnBuilders)
Description copied from interface:AccumulatorFor aggregation function like COUNT, SUM, partialResult should be single, so its output column is single too; But for AVG(COUNT and SUM), LAST_VALUE(LAST_VALUE and MAX_TIME), the output columns should be double in dictionary order.- Specified by:
outputIntermediatein interfaceAccumulator
-
outputFinal
public void outputFinal(org.apache.iotdb.tsfile.read.common.block.column.ColumnBuilder columnBuilder)
Description copied from interface:AccumulatorFinal result is single column for any aggregation function.- Specified by:
outputFinalin interfaceAccumulator
-
reset
public void reset()
- Specified by:
resetin interfaceAccumulator
-
hasFinalResult
public boolean hasFinalResult()
Description copied from interface:AccumulatorThis method can only be used in seriesAggregateScanOperator. For first_value or last_value in decreasing order, we can get final result by the first record.- Specified by:
hasFinalResultin interfaceAccumulator
-
getIntermediateType
public org.apache.iotdb.tsfile.file.metadata.enums.TSDataType[] getIntermediateType()
- Specified by:
getIntermediateTypein interfaceAccumulator
-
getFinalType
public org.apache.iotdb.tsfile.file.metadata.enums.TSDataType getFinalType()
- Specified by:
getFinalTypein interfaceAccumulator
-
addIntInput
protected int addIntInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
-
updateIntFirstValue
protected void updateIntFirstValue(int value, long curTime)
-
addLongInput
protected int addLongInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
-
updateLongFirstValue
protected void updateLongFirstValue(long value, long curTime)
-
addFloatInput
protected int addFloatInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
-
updateFloatFirstValue
protected void updateFloatFirstValue(float value, long curTime)
-
addDoubleInput
protected int addDoubleInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
-
updateDoubleFirstValue
protected void updateDoubleFirstValue(double value, long curTime)
-
addBooleanInput
protected int addBooleanInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
-
updateBooleanFirstValue
protected void updateBooleanFirstValue(boolean value, long curTime)
-
addBinaryInput
protected int addBinaryInput(org.apache.iotdb.tsfile.read.common.block.column.Column[] column, org.apache.iotdb.tsfile.read.common.TimeRange timeRange)
-
updateBinaryFirstValue
protected void updateBinaryFirstValue(org.apache.iotdb.tsfile.utils.Binary value, long curTime)
-
-