次の方法で共有


aggregate 関数

適用対象:「はい」のチェック マーク Databricks SQL 「はい」のチェック マーク Databricks Runtime

カスタム アグリゲーターを使用して、配列内の要素を集計します。 この関数は、reduce 関数のシノニムです。

構文

aggregate(expr, start, merge [, finish])

引数

  • expr: ARRAY 式。
  • start: 任意の型の初期値。
  • merge: 現在の要素を集計するために使用されるラムダ関数。
  • finish: 集計を完了するために使用されるラムダ関数 (省略可能)。

戻り値

結果の型は、finish ラムダ関数の結果の型 (存在する場合) または start と一致します。

式を初期状態と配列内のすべての要素に適用して、これを 1 つの状態に絞り込みます。 最終状態は、finish 関数を適用することによって最終的な結果に変換されます。

merge 関数は、2 つのパラメーターを受け取ります。 1 つ目はアキュムレータで、2 つ目は集計される要素です。 アキュムレータと結果は、start の型である必要があります。 省略可能な finish 関数は、1 つのパラメーターを受け取り、最終的な結果を返します。

> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x);
 6
> SELECT aggregate(array(1, 2, 3), 0, (acc, x) -> acc + x, acc -> acc * 10);
 60

> SELECT aggregate(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