AggregateFunction

This data type isn't supported at ingest. It is only supported at query time and to create Copy Data Sources or Materialized View Data Sources.

Aggregate functions have an implementation-defined intermediate state that can be serialized to an AggregateFunction(...) data type and stored in a table, usually, by means of a materialized view. The common way to produce an aggregate function state is by calling the aggregate function with the -State suffix. To get the final result of aggregation in the future, you must use the same aggregate function with the -Merge suffix.

AggregateFunction(name, types_of_arguments...): parametric data type.

Parameters

  • Name of the aggregate function. If the function is parametric, specify its parameters too.
  • Types of the aggregate function arguments.

Data selection

When selecting data from AggregatingMergeTree table, use GROUP BY clause and the same aggregate functions as when inserting data, but using -Merge suffix.

An aggregate function with -Merge suffix takes a set of states, combines them, and returns the result of complete data aggregation.

For example, the following two queries return the same result:

SELECT uniq(UserID) FROM table

SELECT uniqMerge(state) FROM (SELECT uniqState(UserID) AS state FROM table GROUP BY RegionID)
Updated