Перейти к основному содержимому
Перейти к основному содержимому

SimpleAggregateFunction

SimpleAggregateFunction(name, types_of_arguments...) — тип данных, который хранит текущее значение (промежуточное состояние) агрегатной функции, но не её полное состояние, как это делает AggregateFunction. Эта оптимизация может быть применена к функциям, для которых выполняется следующее свойство: результат применения функции f к набору строк S1 UNION ALL S2 может быть получен путем применения f к частям набора строк отдельно, а затем снова применения f к результатам: f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2)). Это свойство гарантирует, что частичных результатов агрегации достаточно для вычисления комбинированного, поэтому нам не нужно хранить и обрабатывать дополнительные данные.

Общий способ получения значения агрегатной функции — это вызов агрегатной функции с суффиксом -SimpleState.

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

примечание

Значения SimpleAggregateFunction(func, Type) выглядят и хранятся так же, как и Type, так что вам не нужно применять функции с суффиксами -Merge/-State.

SimpleAggregateFunction имеет лучшую производительность, чем AggregateFunction с той же агрегатной функцией.

Параметры

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

Пример