java—同一列中的日期差异apache spark

d8tt03nd  于 2021-08-20  发布在  Java
关注(0)|答案(1)|浏览(277)

我有一列,我需要找出每行之间的日期差(以天为单位),按id分区。。这必须使用spark sql完成。我写了下面的代码,但不知怎么的,答案是错的。请告诉我哪里出了问题。

WindowSpec window = Window.partitionBy("id").orderBy("date_time");
Dataset<Row> resultSet = testData.withColumn("day_diff", functions.datediff(col("date_time"), functions.lag(col("date_time"), 1).over(window)));

zhte4eai

zhte4eai1#

你应该一个接一个地做。
步骤1:使用窗口功能从上一行收集日期。
步骤2:使用datediff查找差异。
多喝点可乐

testData
.withColumn("prev_date", functions.lag(col("date_time"),1).over(window))
.withColumn("day_diff", functions.datediff(col("date_time")), col("prev_date"))
.drop(col("prev_date"))

相关问题