slice:数组切片
速查结论
slice(x, start, length) 是 Spark SQL 中用于从数组中截取指定长度子集的函数。
语法
slice(x, start, length)
参数说明
| 参数 | 类型 | 说明 |
|---|---|---|
| x | ARRAY<T> | 输入的数组 |
| start | INT | 起始索引(从 1 开始)。若为负数,则从数组末尾向前计数 |
| length | INT | 要截取的元素个数 |
Examples
> SELECT slice(array(1, 2, 3, 4), 2, 2);
[2,3]
> SELECT slice(array(1, 2, 3, 4), -2, 2);
[3,4]
常见报错与避坑指南
- 索引从 1 开始而非 0:与许多编程语言不同,Spark SQL 中
slice的start参数使用 1-based 索引,即第 1 个元素的索引为 1。 - start 超出范围时返回空数组:如果
start的绝对值大于数组长度,slice返回空数组[]而非报错。 - length 为负数或零:
length < 0会返回NULL,length = 0返回空数组。
Since: 2.4.0
📱关注公众号
「数据仓库技术」文章同步更新,不错过每一篇干货

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