跳到主要内容

arrays_zip:合并多个数组

速查结论

arrays_zip(a1, a2, ...) 是 Spark SQL 中用于将多个数组按位置合并为结构体数组的函数。

语法

arrays_zip(a1, a2, ...)

参数说明

参数类型说明
a1, a2, ...ARRAY两个或多个要合并的输入数组

返回值

返回一个 ARRAY<STRUCT>,其中每个结构体包含输入数组中第 N 个位置的所有值。结构体的字段名默认为 "0"、"1"、"2" 等,对应每个输入数组的位置索引。

示例

> SELECT arrays_zip(array(1, 2, 3), array(2, 3, 4));
[{"0":1,"1":2},{"0":2,"1":3},{"0":3,"1":4}]
> SELECT arrays_zip(array(1, 2), array(2, 3), array(3, 4));
[{"0":1,"1":2,"2":3},{"0":2,"1":3,"2":4}]

常见报错与避坑指南

  • 数组长度不一致:如果输入数组长度不同,较短的数组会在缺少元素的位置填充 null。结果的长度等于最长输入数组的长度。
  • 字段名使用索引:输出结构体的字段名默认是 "0"、"1"、"2" 等字符串形式的索引,而非原始列名。如需自定义字段名,可以在使用 arrays_zip 后通过 WITH 子句或外层 SELECT 重命名字段。
  • null 输入处理:如果任一输入数组为 null,函数返回 null。

Since: 2.4.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看