Skip to main content

Aggregate Functions

Aggregate functions are pre-configured aggregation operations that can consumes zero, or more parameters from multiple events and always produce a single value as result. They can be only used in the query projection as part of the SELECT clause.

When a query includes a window, the aggregation will be contained to the events in the window, and when it does not have a window, the aggregation is performed from the first event the query has received.

Purpose

Aggregate functions encapsulate pre-configured reusable aggregate logic allowing users to aggregate values of multiple events together. When used with batch (tumbling) windows, this can also help to reduce the number of output events produced.

Syntax

Aggregate function can be used in query projection (as part of the SELECT clause) alone or as a part of another expression. In all cases, the output produced by the query should be properly mapped to the output stream attribute using the AS keyword.

The syntax of an aggregate function is:

INSERT INTO <output stream>
SELECT <aggregate function>(<parameter>, <parameter>, ... ) AS <attribute name>, <attribute2 name>, ...
FROM <input stream> WINDOW <window name>(<parameter>, <parameter>, ... );

Here <aggregate function> uniquely identifies the aggregate function. The <parameter> defines input parameters the aggregate function can accept. The input parameters can be attributes, constant values, results of other functions or aggregate functions, results of mathematical or logical expressions, or time values. The number and type of parameters an aggregate function accepts depend on the function itself.

You can also create named aggregations. For more information, refer to Named Aggregations.

Aggregate Functions

This table provides links to some built-in aggregation functions:

Aggregate FunctionDescription
andCalculates boolean and from a set of values.
avgCalculates the average from a set of values.
countCalculates the count from a set of values.
distinctcountCalculates the distinct count based on a parameter from a set of values.
maxFinds the maximum value from a set of values.
maxForeverFinds the maximum value from all events throughout its lifetime irrespective of the windows.
minFinds the minimum value from a set of values.
minForeverFinds the minimum value from all events throughout its lifetime irrespective of the windows.
orCalculates boolean or from a set of values.
stddevCalculates the standard deviation from a set of values.
sumCalculates the sum from a set of values.
unionSetCalculates union as a Set from a set of values.

Example

INSERT INTO AvgTempStream
SELECT avg(temp) AS avgTemp, max(temp) AS maxTemp, min(temp) AS minTemp
FROM TempStream WINDOW sliding_time(10 min);

Query to calculate the average, maximum, and minimum values on temp attribute of the TempStream in a sliding manner, from the events arrived over the last 10 minutes and to produce outputs avgTemp, maxTemp, and minTemp respectively to the AvgTempStream output stream.