apache-spark - Spark `lag` 可以无条件使用吗?
问题描述
在 Spark 中,lag
是在 的限制下使用的over()
,但在我的情况下,over()
没有必要。我想在没有分组、排序或分区的情况下计算连续行之间的差异。我知道我需要lag
用于计算,但我不知道如何用 'empty' 来做over()
。谁能帮我?谢谢!
解决方案
你不能使用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
推荐阅读
- oracle - 加入没有公共 Serial_Num 列
- mysql - docker 中的 MariaDB 说 - 错误代码:2013。在查询期间失去与 MySQL 服务器的连接
- php - mysql查询到laravel orm
- amazon-web-services - 如何路由到云端的不同应用程序
- gitlab - 使用 gitlab runner 在 windows ec2 上开始构建
- c - 静态指针
- bash - 无法加载 .bash_profile
- c++ - 使用基类的通用消息调度,如何(或应该)避免 dynamic_cast
- go - 如何使用 GCP 在 pubsub 模型中一次向所有订阅者发送消息
- function - React Native 无状态函数在导入时不渲染