適用対象:
Databricks SQL
Databricks Runtime
カスタム アグリゲーターを使用して、配列内の要素を集計します。 この関数は、 aggregate 関数のシノニムです。
構文
reduce(expr, start, merge [, finish] )
引数
-
expr:ARRAY式。 -
start: 任意の型の初期値。 -
merge: 現在の要素を集計するために使用されるラムダ関数。 -
finish: 集計を完了するために使用されるラムダ関数 (省略可能)。
戻り値
結果の型は、finish ラムダ関数の結果の型 (存在する場合) または start と一致します。
式を初期状態と配列内のすべての要素に適用して、これを 1 つの状態に絞り込みます。 最終状態は、finish 関数を適用することによって最終的な結果に変換されます。
merge 関数は、2 つのパラメーターを受け取ります。 1 つ目はアキュムレータで、2 つ目は集計される要素です。
アキュムレータと結果は、start の型である必要があります。
省略可能な finish 関数は、1 つのパラメーターを受け取り、最終的な結果を返します。
例
> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x);
6
> SELECT reduce(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
60
> SELECT reduce(array(1, 2, 3, 4),
named_struct('sum', 0, 'cnt', 0),
(acc, x) -> named_struct('sum', acc.sum + x, 'cnt', acc.cnt + 1),
acc -> acc.sum / acc.cnt) AS avg
2.5