CREATE AGGREGATE
The CREATE AGGREGATE
command can be used to create user-defined aggregate functions (UDAFs). Currently, UDAFs are only supported in Python and JavaScript as embedded UDFs.
Syntax
Parameters
Parameter or clause | Description |
---|---|
function_name | The name of the aggregate function that you want to declare in RisingWave. |
argument_type | The data type of the input parameter(s) that the function expects to receive. |
RETURNS return_type | The data type of the return value from the aggregate function. |
LANGUAGE | The programming language used to implement the UDAF. Currently, Python and JavaScript are supported. |
AS function_body | The source code of the UDAF. |
In the function_body, the code should define several functions to implement the aggregate function.
Required functions:
create_state() -> state
: Create a new state.accumulate(state, *args) -> state
: Accumulate a new value into the state, returning the updated state.
Optional functions:
finish(state) -> value
: Get the result of the aggregate function. If not defined, the state is returned as the result.retract(state, *args) -> state
: Retract a value from the state, returning the updated state. If not defined, the state can not be updated incrementally in materialized views and performance may be affected.
See examples below for more details.
Examples
Python
The following command creates an aggregate function named weighted_avg
to calculate the weighted average.
For more details, see Use UDFs in Python.
JavaScript
The following command creates an aggregate function named weighted_avg
to calculate the weighted average.
For more details, see Use UDFs in JavaScript.
Using UDAFs
After creating aggregate functions, you can use them in SQL queries like any built-in aggregate functions.
See also
Was this page helpful?