跳到主要内容

nth_value:第N行取值

速查结论

nth_value(input[, offset]) 是 Spark SQL 中用于返回窗口帧内从开始处算起的第 offset 行的值的窗口函数。

语法

nth_value(input, offset[, ignoreNulls]) OVER (PARTITION BY expr ORDER BY expr [ASC|DESC])

参数说明

参数类型说明
input表达式要获取值的列或表达式。
offsetINTEGER窗口帧中的偏移量,从 1 开始计数。必须为正整数字面量。
ignoreNullsBOOLEAN可选。如果设置为 true,在查找第 offset 行时将跳过空值;否则每一行都计入 offset。

示例

> SELECT a, b, nth_value(b, 2) OVER (PARTITION BY a ORDER BY b) FROM VALUES ('A1', 2), ('A1', 1), ('A2', 3), ('A1', 1) tab(a, b);
A1 1 1
A1 1 1
A1 2 1
A2 3 NULL

常见报错与避坑指南

  • offset 超出范围:如果 offset 大于窗口帧中的行数,nth_value() 返回 NULL。确保窗口帧大小足以覆盖指定的 offset 值,或使用 ROWS BETWEEN 子句显式定义窗口帧范围。
  • offset 从 1 开始:注意 offset 的计数从 1 开始(不是 0),nth_value(col, 1) 等价于 first_value(col)

Since: 3.1.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看