aggregate
函数
适用于: Databricks SQL Databricks Runtime
使用自定义聚合器聚合数组中的元素。 此函数是 reduce 函数的同义词。
语法
aggregate(expr, start, merge [, finish])
参数
expr
:一个数组表达式。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