共用方式為


reduce函式

適用於:選擇標記為是 Databricks SQL 選擇標記為是 Databricks Runtime

使用自訂彙總工具彙總數組中的項目。 此函式與 aggregate 函式同義。

語法

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

引數

  • exprARRAY 表達式。
  • start:任何類型的初始值。
  • merge:用來匯總當前元素的 Lambda 函式。
  • finish:選擇性 Lambda 函式,用來完成匯總。

退貨

如果存在 或 finish,則結果類型會比對 Lambda 函式的結果類型start

將運算式套用至初始狀態和陣列中的所有元素,並將其縮減為單一狀態。 最終狀態會藉由套用 finish 函式轉換成最終結果。

merge 函式接受兩個參數。 第一個是累加器,第二個是要聚合的元素。 累加器和結果必須是 start 的型別。 選擇性 finish 函式會採用一個參數,並傳回最終結果。

範例

> 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