explode_outer:行展开(保留空值)
速查结论
explode_outer(expr) 是 Spark SQL 中用于将数组或映射的元素拆分成多行,且保留 NULL 或空数组/映射对应的行的函数。
语法
explode_outer(expr)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| expr | ARRAY<T> 或 MAP<K,V> | 要展开的数组或映射。对于数组,默认列名为 col;对于映射,默认列名为 key 和 value |
Examples
> SELECT explode_outer(array(10, 20));
10
20
> SELECT explode_outer(collection => array(10, 20));
10
20
> SELECT * FROM explode_outer(collection => array(10, 20));
10
20
常见报错与避坑指南
- explode 与 explode_outer 的区别:
explode在遇到 NULL 或空数组/映射时会丢弃整行,而explode_outer会保留该行并生成一行 NULL 值。当需要保留所有行时,应使用explode_outer。 - LATERAL VIEW 配合使用:
explode_outer通常与LATERAL VIEW搭配使用,将单行中的数组/映射字段展开为多行,同时保留原始行中的其他列。
Since: 1.0.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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