跳到主要内容

lead:向后取值

速查结论

lead(input[, offset[, default]]) 是 Spark SQL 中用于返回当前行之后第 offset 行的值的窗口函数。

语法

lead(input[, offset[, default]]) OVER (PARTITION BY expr ORDER BY expr [ASC|DESC])

参数说明

参数类型说明
input表达式要获取后一行值的列或表达式。
offsetINTEGER可选。向后跳过的行数,默认值为 1。
default表达式可选。当偏移行不存在时返回的默认值,默认值为 NULL。

示例

> SELECT a, b, lead(b) 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 2
A1 2 NULL
A2 3 NULL

常见报错与避坑指南

  • 分区末行的处理:对于每个分区内的最后几行(offset 超出范围),由于不存在对应的后续行,lead() 返回 default 值(默认为 NULL)。
  • 与 lag 的区别lead() 向前看(获取后续行),lag() 向后看(获取之前行)。两者用法对称,选择取决于业务分析方向。
  • ORDER BY 是必需的:与 lag() 一样,lead() 也需要通过 ORDER BY 确定行的先后顺序。

Since: 2.0.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看