跳到主要内容

collect_list:收集为列表

速查结论

collect_list(expr) 是 Spark SQL 中用于将一组行的表达式值收集为非唯一元素列表的聚合函数。

语法

collect_list(expr)

参数说明

参数说明
expr任意表达式

示例

> SELECT collect_list(col) FROM VALUES (1), (2), (1) AS tab(col);
[1,2,1]

常见报错与避坑指南

  • 非确定性顺序:该函数是非确定性的,收集结果的顺序取决于行的顺序,在 shuffle 之后可能不确定。如果对顺序有明确要求,应先在子查询中 ORDER BY 后再聚合。
  • 内存压力:当聚合的数据量非常大时,collect_list 可能产生巨大的数组,有 OOM 风险。对于大数据量场景,需评估是否必须将全部值收集到单个数组中。
  • array_agg 的关系collect_listarray_agg 功能等价,都是收集非唯一元素。可根据项目代码风格选择使用。

Since: 2.0.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看