【发布时间】:2020-05-06 17:05:04
【问题描述】:
我有一个数据框,其中只有 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
---+------+---+----+-
【问题讨论】:
-
你如何定义“以前的”值?
-
好的,还有一列称为 id,它是数字的,我们已按升序对其进行了排序。现在,第一行的第一个值是 A,并且开始 B = A 为第一行。对于所有接下来的行,B = max (prev B, current A)。
-
如果
B = max ( prev B, current A)那么示例行 5,6 中的 B 值应该是 = 5 ? -
@chlebek,因为它是该类别的第一个元素
标签: scala apache-spark apache-spark-sql