public interface Aggregate<T>
extends scala.Serializable
The intermediate aggregate value is stored inside Row, aggOffsetInRow is used as the start field index in Row, so different aggregate functions could share the same Row as intermediate aggregate value/aggregate buffer, as their aggregate values could be stored in distinct fields of Row with no conflict. The intermediate aggregate value is required to be a sequence of JVM primitives, and Flink use intermediateDataType() to get its data types in SQL side.
Modifier and Type | Method and Description |
---|---|
T |
evaluate(Row buffer)
Calculate the final aggregated result based on aggregate buffer.
|
void |
initiate(Row intermediate)
Initiate the intermediate aggregate value in Row.
|
TypeInformation<?>[] |
intermediateDataType()
Intermediate aggregate value types.
|
void |
merge(Row intermediate,
Row buffer)
Merge intermediate aggregate data into aggregate buffer.
|
void |
prepare(Object value,
Row intermediate)
Transform the aggregate field value into intermediate aggregate data.
|
void |
setAggOffsetInRow(int aggOffset)
Set the aggregate data offset in Row.
|
boolean |
supportPartial()
Whether aggregate function support partial aggregate.
|
void prepare(Object value, Row intermediate)
value
- The value to insert into the intermediate aggregate row.intermediate
- The intermediate aggregate row into which the value is inserted.void initiate(Row intermediate)
intermediate
- The intermediate aggregate row to initiate.void merge(Row intermediate, Row buffer)
intermediate
- The intermediate aggregate row to merge.buffer
- The aggregate buffer into which the intermedidate is merged.T evaluate(Row buffer)
buffer
- The aggregate buffer from which the final aggregate is computed.TypeInformation<?>[] intermediateDataType()
void setAggOffsetInRow(int aggOffset)
aggOffset
- The offset of this aggregate in the intermediate aggregate rows.boolean supportPartial()
Copyright © 2014–2017 The Apache Software Foundation. All rights reserved.