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- 集約関数引数の型。
サポートされる関数
サポートされている集約関数は以下の通りです:
anyany_respect_nullsanyLastanyLast_respect_nullsminmaxsumsumWithOverflowgroupBitAndgroupBitOrgroupBitXorgroupArrayArraygroupUniqArrayArraygroupUniqArrayArrayMapsumMapminMapmaxMap
SimpleAggregateFunction(func, Type) の値は同じ Type を持ちます。したがって、AggregateFunction タイプとは異なり、-Merge / -State コンビネータを適用する必要はありません。
SimpleAggregateFunction タイプは、同じ集約関数に対して AggregateFunction よりも優れたパフォーマンスを持っています。
例
関連コンテンツ
- ブログ: ClickHouseにおける集約コンビネータの使用 - ブログ: ClickHouseにおける集約コンビネータの使用
- AggregateFunction タイプ。