メインコンテンツまでスキップ
メインコンテンツまでスキップ

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 - 集約関数の引数の型。

サポートされている関数

以下の集約関数がサポートされています:

注記

SimpleAggregateFunction(func, Type) の値は同じ Type を持つため、AggregateFunction タイプとは異なり、-Merge/-State コンビネータを適用する必要はありません。

SimpleAggregateFunction タイプは、同じ集約関数に対して AggregateFunction よりもパフォーマンスが優れています。