SimpleAggregateFunction タイプ
説明
SimpleAggregateFunction
データタイプは、集約関数の中間状態を格納しますが、AggregateFunction
タイプが保持する完全な状態は保持しません。
この最適化は、次の性質を持つ関数に適用できます:
行セット
S1 UNION ALL S2
に関数f
を適用した結果は、行セットの部分に対してそれぞれf
を適用し、その結果に再度f
を適用することで得ることができます:f(S1 UNION ALL S2) = f(f(S1) UNION ALL f(S2))
。
この性質は、部分的な集約結果が結合された結果を計算するのに十分であることを保証しますので、追加のデータを保存したり処理したりする必要がありません。例えば、min
または max
関数の結果は、中間ステップから最終結果を計算するのに追加の手順が不要ですが、avg
関数は合計とカウントを追跡する必要があり、最終的な Merge
ステップでこれらを割って平均を求める必要があります。
集約関数の値は、-SimpleState
コンビネータを関数名に追加して集約関数を呼び出すことで一般的に生成されます。
構文
パラメーター
aggregate_function_name
- 集約関数の名前。Type
- 集約関数の引数の型。
サポートされている関数
以下の集約関数がサポートされています:
any
any_respect_nulls
anyLast
anyLast_respect_nulls
min
max
sum
sumWithOverflow
groupBitAnd
groupBitOr
groupBitXor
groupArrayArray
groupUniqArrayArray
groupUniqArrayArrayMap
sumMap
minMap
maxMap
注記
SimpleAggregateFunction(func, Type)
の値は同じ Type
を持つため、AggregateFunction
タイプとは異なり、-Merge
/-State
コンビネータを適用する必要はありません。
SimpleAggregateFunction
タイプは、同じ集約関数に対して AggregateFunction
よりもパフォーマンスが優れています。
例
関連コンテンツ
- ブログ: ClickHouseにおける集約コンビネータの使用
- AggregateFunction タイプ。