跳到主要内容

aggregate:数组聚合归约

速查结论

aggregate(expr, start, merge, finish) 是 Spark SQL 中用于对数组元素进行自定义聚合归约的函数。

语法

aggregate(expr, start, merge, finish)

参数说明

参数说明
expr输入的数组表达式
start聚合的初始值
merge合并函数,对每个元素与当前累加状态进行合并,签名为 (acc, x) -> ...
finish(可选)完成函数,对聚合后的最终状态进行转换,签名为 acc -> ...

示例

> 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

常见报错与避坑指南

  • merge 函数签名不匹配:merge 函数必须接收两个参数(累加状态与当前元素),且返回类型需与 start 和累加器类型兼容,否则会抛出类型不匹配异常。
  • finish 函数未定义时的返回值:如果不提供 finish 函数,aggregate 直接返回 merge 完成后的状态值,无需额外终止处理。
  • 空数组的处理:对空数组调用 aggregate 时,会直接返回 start 作为结果,不会调用 merge 函数。

Since: 2.4.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

备注「数据仓库技术」加入社群,每日一道大厂SQL真题

交流微信二维码

你可能还想看