0
私はDays_btwn_Shpmntを計算したかったのですが、これは船の日付と日の間の日数です。第1レコードと第2レコードの間でこれを計算する必要があります。
Spark/Scalaを使用してこれをどのように行うことができますか?
おかげで、 ジョー
私はDays_btwn_Shpmntを計算したかったのですが、これは船の日付と日の間の日数です。第1レコードと第2レコードの間でこれを計算する必要があります。
Spark/Scalaを使用してこれをどのように行うことができますか?
おかげで、 ジョー
あなたが火花でこの使用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|
+----------+----------+--------------+
ありがとう – joesek