跳到主要内容

last:返回最后一个值

速查结论

last(expr[, isIgnoreNull]) 是 Spark SQL 中用于返回一组行中表达式的最后一个值的函数。

语法

last(expr[, isIgnoreNull])

参数说明

参数说明
expr任意表达式,指定要获取最后一个值的列或表达式
isIgnoreNull可选布尔参数。如果设置为 true,则跳过 NULL 值,只返回最后一个非空值。默认值为 false

示例

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

常见报错与避坑指南

  • 结果不确定:该函数是非确定性的,因为它的结果取决于行的顺序,这在经过 shuffle 之后可能是不确定的。如果需要稳定结果,建议先对数据排序或使用窗口函数中的 LAST_VALUE
  • NULL 值处理:默认情况下 last() 不会跳过 NULL 值。如果最后一行是 NULL,结果就是 NULL。如需忽略 NULL,务必显式传入 isIgnoreNull = true

Since: 2.0.0

📱关注公众号

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

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

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

交流微信二维码

你可能还想看