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

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