reduce
関数
適用対象: Databricks SQL Databricks Runtime
カスタム アグリゲーターを使用して、配列内の要素を集計します。 この関数は、aggregate 関数の同意語です。
構文
reduce(expr, start, merge [, finish] )
引数
expr
:ARRAY
式。start
: 任意の型の初期値。merge
: 現在の要素を集計するために使用されるラムダ関数。finish
: 集計を完了するために使用されるラムダ関数 (省略可能)。
戻り値
結果の型は、finish
ラムダ関数の結果の型 (存在する場合) または start
と一致します。
式を初期状態と配列内のすべての要素に適用して、これを 1 つの状態に絞り込みます。 最終状態は、finish
関数を適用することによって最終的な結果に変換されます。
merge
関数は、2 つの parametersを受け取ります。 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