我的 Dataframe 是这样的
id value date
1 100 2017
1 null 2016
1 20 2015
1 100 2014
我想获取最新的前值,但忽略空值
id value date recent value
1 100 2017 20
1 null 2016 20
1 20 2015 100
1 100 2014 null
有没有办法在使用lead
窗口函数时忽略空值?
3条答案
按热度按时间vshtjzan1#
在Spark中使用Lead Window函数时是否可以忽略空值
但事实并非如此。
我希望获得最新的值,但忽略空值
只需将
last
(或first
)与ignoreNulls
一起使用:def last(columnName: String, ignoreNulls: Boolean): Column
聚合函数:返回组中列的最后一个值。
默认情况下,该函数返回它看到的最后一个值。它将返回它看到的最后一个非NULL值,该值设置为TRUE。如果所有值都为NULL,则返回NULL。
hkmswyz62#
您可以分两步完成此操作:
1.创建具有非空值的表
1.在原始表上连接
sh7euo9m3#
**Spark 3.2+**在
lead
中提供ignoreNulls
,在Scala中提供lag
。Lead(e:Column,Offset:int,defaultValue:Any,IgnreNulls:Boolean):Column
LAG(e:Column,Offset:int,defaultValue:Any,IgnreNulls:Boolean):Column
测试输入:
lead
:lag
: