Skip to content
ClickHouse Docs
ClickHouse DocsClickHouse Docs

Тип данных SimpleAggregateFunction

Описание

Тип данных SimpleAggregateFunction хранит промежуточное состояние агрегатной функции, но не её полное состояние, в отличие от типа AggregateFunction.

Эту оптимизацию можно применять к функциям, для которых выполняется следующее свойство:

результат применения функции f к набору строк S1 UNION ALL S2 можно получить, если применить f к частям этого набора строк по отдельности, а затем ещё раз применить f к полученным результатам: f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2)).

Это свойство гарантирует, что частичных результатов агрегации достаточно для вычисления общего результата, поэтому не требуется хранить и обрабатывать дополнительные данные. Например, для функций min или max не нужны дополнительные шаги, чтобы получить окончательный результат из промежуточных, тогда как для функции avg нужно отслеживать сумму и количество, которые затем делятся для получения среднего значения на финальном этапе Merge, объединяющем промежуточные состояния.

Значения агрегатной функции обычно получают, вызывая агрегатную функцию с комбинатором -SimpleState, добавленным к имени функции.

Синтаксис

SimpleAggregateFunction(aggregate_function_name, types_of_arguments...)

Параметры

  • aggregate_function_name - Имя агрегатной функции.
  • Type - Типы аргументов агрегатной функции.

Поддерживаемые функции

Поддерживаются следующие агрегатные функции:

Пример

CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;
Navigation