Imr*_*n K 0 scala apache-spark apache-spark-sql
我有一个只有列category和 A列的数据框,如下所示。我想填充 B 列,以便它比较 A 的当前值和 B 的先前值并存储每个类别的最大值。尝试使用 Windows 函数、滞后、类别最大值等,但我面临的最大挑战是如何在比较两个值时记住较早的最大值。
+---+--------+--+--+
id | category | A | B |
+---+--------+--+--+
1 Fruit 1 1
2 Fruit 5 5
3 Fruit 3 5
4 Fruit 4 5
1 Dessert 4 4
2 Dessert 2 4
1 Veggies 11 11
2 Veggies 7 11
3 Veggies 12 12
4 Veggies 3 12
---+------+---+----+-
Run Code Online (Sandbox Code Playgroud)
使用运行最大值A应该可以解决问题:
df
.withColumn("B", max($"A").over(Window.partitionBy($"category").orderBy($"id")))
Run Code Online (Sandbox Code Playgroud)