以下のスニペットが機能するはずです。ここでは、基本的に開始日と終了日の間のすべての日付をリストする別のデータフレームとデータセットの間で左結合を実行します。
import org.apache.spark.sql.expressions.Window
val df1 = Seq(("2017/5/1", 1000), ("2017/5/5", 1000)).toDF("day","value")
val df2 = Seq("2017/5/1","2017/5/2","2017/5/3","2017/5/4","2017/5/5").toDF("date")
val result = df2
.join(df1, df1("day") === df2("date"), "left_outer")
.withColumn("value", when($"value".isNull,0).otherwise($"value"))
.select("date","value")
.withColumn("value", sum($"value").over(Window.orderBy($"date")))
result.show()
{"level": "WARN ", "timestamp": "2017-05-22 05:01:28,693", "classname": "org.apache.spark.sql.execution.WindowExec", "body": "No Partition Defined for Window operation! Moving all data to a single partition, this can cause serious performance degradation."}
+--------+-----+
| date|value|
+--------+-----+
|2017/5/1| 1000|
|2017/5/2| 1000|
|2017/5/3| 1000|
|2017/5/4| 1000|
|2017/5/5| 2000|
+--------+-----+
入力データセットは?注文がなかった日に欠落した行を生成しますか? –