首页 > 解决方案 > Spark `lag` 可以无条件使用吗?

问题描述

在 Spark 中,lag是在 的限制下使用的over(),但在我的情况下,over()没有必要。我想在没有分组、排序或分区的情况下计算连续行之间的差异。我知道我需要lag用于计算,但我不知道如何用 'empty' 来做over()。谁能帮我?谢谢!

标签: apache-sparklag

解决方案


你不能使用lag没有over(). 但是您可以传递任何文字/同意值,以便它可以lag在连续行上执行功能,而无需分组排序或分区。

如下:

val w = Window.orderBy(lit(1))
df.withColumn("lagOut", lag(col("<column name>"), 1).over(w))

请查看以下链接了解更多详情:

https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html


推荐阅读