SimpleAggregateFunction(func, type)
Хранит только текущее значение агрегатной функции и не сохраняет ее полное состояние, как это делает AggregateFunction. Такая оптимизация может быть применена к функциям, которые обладают следующим свойством: результат выполнения функции f к набору строк S1 UNION ALL S2 может быть получен путем выполнения f к отдельным частям набора строк,
а затем повторного выполнения f к результатам: f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2)). Это свойство гарантирует, что результатов частичной агрегации достаточно для вычисления комбинированной, поэтому хранить и обрабатывать какие-либо дополнительные данные не требуется.
Чтобы получить промежуточное значение, обычно используются агрегатные функции с суффиксом -SimpleState.
Поддерживаются следующие агрегатные функции:
- any
- anyLast
- min
- max
- sum
- sumWithOverflow
- groupBitAnd
- groupBitOr
- groupBitXor
- groupArrayArray
- groupUniqArrayArray
- groupUniqArrayArrayMap
- sumMap
- minMap
- maxMap
Параметры
- func— имя агрегатной функции.
- type— типы аргументов агрегатной функции.
Пример
CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;