aggregate
函式
適用於:Databricks SQL
Databricks Runtime
使用自訂彙總工具彙總數組中的項目。 此函式是reduce 函式的同義詞。
語法
aggregate(expr, start, merge [, finish])
引數
-
expr
:ARRAY 表達式。 -
start
:任何類型的初始值。 -
merge
:用來匯總目前元素的 Lambda 表達式。 -
finish
:選擇性 Lambda 函式,用來完成匯總。
退貨
如果存在 或 finish
,則結果類型會比對 Lambda 函式的結果類型start
。
將表達式套用至初始狀態和陣列中的所有元素,並將其歸納為單一狀態。 最終狀態會藉由套用 finish
函式轉換成最終結果。
merge
函式接受兩個參數。 第一個是累加器,第二個是待聚合的元素。
累加器和結果的型別必須是 start
。
選擇性 finish
函式會採用一個參數,並傳回最終結果。
範例
> 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