[英]How to calculate duration between records in Spark/Scala?
我想計算Days_btwn_Shpmnt,不過是發貨日期之間的天數。 需要跨第一條記錄和第二條記錄進行計算,依此類推。
您能幫我使用Spark / Scala如何做到嗎?
謝謝喬
您可以使用spark中的lag
功能來完成此操作。 一個示例腳本顯示了它是如何完成的。 請注意,日期必須使用yyyy-mm-dd
格式才能使用datediff
函數。
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.Window
val df = Seq((1000, "2016-01-19"), (1000, "2016-02-12"), (1000, "2016-02-18"), (1000, "2016-02-04")).toDF("product_id", "date")
val result = df.withColumn("last_date" ,lag("date", 1).over(Window.partitionBy($"product_id").orderBy($"date"))).withColumn("daysToShipMent", datediff($"date", $"last_date"))
scala> result.select("product_id", "date", "daysToShipMent" ).show()
+----------+----------+--------------+
|product_id| date|daysToShipMent|
+----------+----------+--------------+
| 1000|2016-01-19| null|
| 1000|2016-02-04| 16|
| 1000|2016-02-12| 8|
| 1000|2016-02-18| 6|
+----------+----------+--------------+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.