簡體   English   中英

如何計算Spark / Scala中記錄之間的持續時間?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM