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における集約コンビネータの使用 - ブログ: ClickHouseにおける集約コンビネータの使用
- AggregateFunction タイプ。