stack:行拆分
速查结论
stack(n, expr1, ..., exprk) 是 Spark SQL 中用于将一组表达式拆分为 n 行的函数。
语法
stack(n, expr1, ..., exprk)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| n | INT | 要生成的行数 |
| expr1, ..., exprk | 任意 | k 个表达式,被依次分配到 n 行中,默认列名为 col0, col1, ... |
Examples
> SELECT stack(2, 1, 2, 3);
1 2
3 NULL
常见报错与避坑指南
- 表达式数量与行数不匹配:如果 k 不是 n 的整数倍,最后一行的剩余列将被填充为 NULL。上例中 3 个表达式分 2 行,第 2 行的第 2 列为 NULL。
- 与 LATERAL VIEW 配合使用:
stack通常与LATERAL VIEW配合使用,将一行中的多个列"旋转"为多行,实现列转行的效果。
Since: 2.0.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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