inline_outer:结构体数组转行(null保留)
速查结论
inline_outer(expr) 是 Spark SQL 中用于将结构体数组展开为多行表格数据,空数组或 null 时保留 NULL 行的函数。
语法
inline_outer(expr)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| expr | ARRAY<STRUCT> | 要展开的结构体数组 |
返回值
返回一个表,将数组中的每个结构体元素展开为一行,结构体的每个字段展开为一列。默认使用列名 col1、col2 等。当输入为空数组或 null 时,inline_outer 仍会生成一行,所有列值为 NULL。
示例
> SELECT inline_outer(array(struct(1, 'a'), struct(2, 'b')));
1 a
2 b
常见报错与避坑指南
- 与 inline 的核心区别:
inline_outer在输入为空数组或 null 时会生成一行 NULL 值,而inline不会生成任何行。这在需要保留左表所有行的 LEFT JOIN 场景中非常关键。 - 仅可在 SELECT 子句或 LATERAL VIEW 中使用:作为生成器函数,
inline_outer只能在 SELECT 子句或LATERAL VIEW中使用。 - 结构体字段名:默认列名为 col1、col2 等。如需自定义列名,使用
LATERAL VIEW inline_outer(arr) AS (name1, name2)语法。
Since: 2.0.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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