public abstract class DeclarativeAggregateFunction
extends org.apache.flink.table.functions.UserDefinedFunction
When implementing a new expression-based aggregate function, you should first decide how many
operands your function will have by implementing operandCount() method. And then you can
use operand(int) fields to represent your operand, like `operand(0)`, `operand(2)`.
Then you should declare all your buffer attributes by implementing aggBufferAttributes(). You should declare all buffer attributes as UnresolvedReferenceExpression, and make sure the name of your attributes are unique within the
function and it should not conflict with operandIndex. You can then use these attributes when
defining initialValuesExpressions(), accumulateExpressions(), mergeExpressions() and getValueExpression().
Note: Developer of DeclarativeAggregateFunction should guarantee that the inferred type of
getValueExpression() is the same as getResultType()
See an full example: AvgAggFunction.
| Constructor and Description |
|---|
DeclarativeAggregateFunction() |
| Modifier and Type | Method and Description |
|---|---|
abstract org.apache.flink.table.expressions.Expression[] |
accumulateExpressions()
Expressions for accumulating the mutable aggregation buffer based on an input row.
|
abstract org.apache.flink.table.expressions.UnresolvedReferenceExpression[] |
aggBufferAttributes()
All fields of the aggregate buffer.
|
abstract org.apache.flink.table.types.DataType[] |
getAggBufferTypes()
All types of the aggregate buffer.
|
org.apache.flink.table.functions.FunctionKind |
getKind() |
abstract org.apache.flink.table.types.DataType |
getResultType()
The result type of the function.
|
org.apache.flink.table.types.inference.TypeInference |
getTypeInference(org.apache.flink.table.catalog.DataTypeFactory factory) |
abstract org.apache.flink.table.expressions.Expression |
getValueExpression()
An expression which returns the final value for this aggregate function.
|
abstract org.apache.flink.table.expressions.Expression[] |
initialValuesExpressions()
Expressions for initializing empty aggregation buffers.
|
abstract org.apache.flink.table.expressions.Expression[] |
mergeExpressions()
A sequence of expressions for merging two aggregation buffers together.
|
org.apache.flink.table.expressions.UnresolvedReferenceExpression |
mergeOperand(org.apache.flink.table.expressions.UnresolvedReferenceExpression aggBuffer)
Merge input of
mergeExpressions(), the input are AGG buffer generated by user
definition. |
org.apache.flink.table.expressions.UnresolvedReferenceExpression[] |
mergeOperands()
Merge inputs of
mergeExpressions(), these inputs are agg buffer generated by user
definition. |
org.apache.flink.table.expressions.UnresolvedReferenceExpression |
operand(int i)
Arg of accumulate and retract, the input value (usually obtained from a new arrived data).
|
abstract int |
operandCount()
How many operands your function will deal with.
|
org.apache.flink.table.expressions.UnresolvedReferenceExpression[] |
operands()
Args of accumulate and retract, the input value (usually obtained from a new arrived data).
|
abstract org.apache.flink.table.expressions.Expression[] |
retractExpressions()
Expressions for retracting the mutable aggregation buffer based on an input row.
|
close, functionIdentifier, open, toStringpublic abstract int operandCount()
public abstract org.apache.flink.table.expressions.UnresolvedReferenceExpression[] aggBufferAttributes()
public abstract org.apache.flink.table.types.DataType[] getAggBufferTypes()
public abstract org.apache.flink.table.types.DataType getResultType()
public abstract org.apache.flink.table.expressions.Expression[] initialValuesExpressions()
public abstract org.apache.flink.table.expressions.Expression[] accumulateExpressions()
public abstract org.apache.flink.table.expressions.Expression[] retractExpressions()
public abstract org.apache.flink.table.expressions.Expression[] mergeExpressions()
attributeName and mergeOperand(attributeName) to refer to the attributes corresponding to each of the buffers
being merged.public abstract org.apache.flink.table.expressions.Expression getValueExpression()
public final org.apache.flink.table.expressions.UnresolvedReferenceExpression[] operands()
public final org.apache.flink.table.expressions.UnresolvedReferenceExpression operand(int i)
public final org.apache.flink.table.expressions.UnresolvedReferenceExpression mergeOperand(org.apache.flink.table.expressions.UnresolvedReferenceExpression aggBuffer)
mergeExpressions(), the input are AGG buffer generated by user
definition.public final org.apache.flink.table.expressions.UnresolvedReferenceExpression[] mergeOperands()
mergeExpressions(), these inputs are agg buffer generated by user
definition.public final org.apache.flink.table.functions.FunctionKind getKind()
public org.apache.flink.table.types.inference.TypeInference getTypeInference(org.apache.flink.table.catalog.DataTypeFactory factory)
getTypeInference in interface org.apache.flink.table.functions.FunctionDefinitiongetTypeInference in class org.apache.flink.table.functions.UserDefinedFunctionCopyright © 2014–2021 The Apache Software Foundation. All rights reserved.