跳到主要内容

first_value:窗口首值

速查结论

first_value(expr[, isIgnoreNull]) 是 Spark SQL 中用于返回窗口帧内第一行的表达式值的窗口函数。

语法

first_value(expr[, isIgnoreNull]) OVER (PARTITION BY expr ORDER BY expr [ASC|DESC])

参数说明

参数类型说明
expr表达式要获取首个值的列或表达式。
isIgnoreNullBOOLEAN可选。如果设置为 true,则跳过空值,返回第一个非空值。默认值为 false

示例

> SELECT first_value(col) FROM VALUES (10), (5), (20) AS tab(col);
10
> SELECT first_value(col) FROM VALUES (NULL), (5), (20) AS tab(col);
NULL
> SELECT first_value(col, true) FROM VALUES (NULL), (5), (20) AS tab(col);
5

常见报错与避坑指南

  • 非确定性:该函数是非确定性的,结果依赖于行的顺序。经过 shuffle 之后行的顺序可能不确定,因此在生产环境中应在 OVER 子句中指定 ORDER BY 以确保结果可复现。
  • NULL 值处理:默认情况下 first_value() 不会跳过 NULL。如果窗口帧的第一行是 NULL,返回值就是 NULL。使用 isIgnoreNull = true 可以跳过空值。

Since: 2.0.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看