2017-06-15 20 views
0

Please see the image of my datasetSpark/Scalaのレコード間の継続時間の計算方法は?

私はDays_btwn_Shpmntを計算したかったのですが、これは船の日付と日の間の日数です。第1レコードと第2レコードの間でこれを計算する必要があります。

Spark/Scalaを使用してこれをどのように行うことができますか?

おかげで、 ジョー

答えて

1

あなたが火花でこの使用lag機能を達成することができます。サンプルスクリプトは、それがどのように行われるかを示しています。日付は、datediffの機能のためにフォーマットyyyy-mm-ddでなければならないことに注意してください。

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| 
+----------+----------+--------------+ 
+0

ありがとう – joesek

関連する問題