可以无条件使用Spark`lag`吗?

时间:2019-11-18 05:56:30

标签: apache-spark lag

在Spark中, import Foundation import Alamofire public class APIClient { @discardableResult private static func performRequest<T:Decodable>(route:APIRouter, decoder: JSONDecoder = JSONDecoder(), completion:@escaping (AFResult<T>)->Void) -> DataRequest { return AF.request(route) .responseDecodable (decoder: decoder){ (response: AFDataResponse<T>) in completion(response.result) print("framework response::",response.result) } } public static func taskID(id: String, completion:@escaping (AFResult< [TaskID]>)->Void) { performRequest(route: APIRouter.TaskById(id: id), completion: completion) } }//APIClient lag的限制下使用,但是在我的情况下,over()不是必需的。我想计算连续行之间的差异,而不进行分组,排序或分区。我知道我需要使用over()进行计算,但是我不知道如何使用“空” lag来进行计算。谁能帮我?谢谢!

1 个答案:

答案 0 :(得分:1)

没有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