SimpleAggregateFunction
SimpleAggregateFunction(name, types_of_arguments...)
データ型は、集約関数の現在の値を格納し、AggregateFunction
のようにその完全な状態を格納しません。この最適化は、次の性質を持つ関数に適用できます。すなわち、行セット S1 UNION ALL S2
に関数 f
を適用した結果は、行セットの部分に対してそれぞれ 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
sumMap
minMap
maxMap
Note
SimpleAggregateFunction(func, Type)
の値は Type
と同じように見え、格納されますので、-Merge
/-State
サフィックスを付けた関数を適用する必要はありません。
SimpleAggregateFunction
は同じ集約関数を持つ AggregateFunction
よりも性能が良くなります。
パラメーター
- 集約関数の名前。
- 集約関数の引数の型。
例
CREATE TABLE simple (id UInt64, val SimpleAggregateFunction(sum, Double)) ENGINE=AggregatingMergeTree ORDER BY id;