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真题
