aggregate 函数

适用于:check marked yes Databricks SQL check marked yes 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