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

Тип 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 к имени функции.

Синтаксис

Параметры

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

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

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

примечание

Значения SimpleAggregateFunction(func, Type) имеют одинаковый Type, поэтому, в отличие от типа AggregateFunction, нет необходимости применять комбинирования -Merge/-State.

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

Пример