跳到主要内容

slice:数组切片

速查结论

slice(x, start, length) 是 Spark SQL 中用于从数组中截取指定长度子集的函数。

语法

slice(x, start, length)

参数说明

参数类型说明
xARRAY<T>输入的数组
startINT起始索引(从 1 开始)。若为负数,则从数组末尾向前计数
lengthINT要截取的元素个数

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 中 slicestart 参数使用 1-based 索引,即第 1 个元素的索引为 1。
  • start 超出范围时返回空数组:如果 start 的绝对值大于数组长度,slice 返回空数组 [] 而非报错。
  • length 为负数或零length < 0 会返回 NULLlength = 0 返回空数组。

Since: 2.4.0

📱关注公众号

「数据仓库技术」文章同步更新,不错过每一篇干货

微信公众号二维码
💬加群交流

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

交流微信二维码

你可能还想看