我正在处理下表,我想根据其他两列的不同值计算一个新列(结果)。
| id1 | id2 | outcome
| 1 | 1 | 1
| 1 | 1 | 1
| 1 | 3 | 2
| 2 | 5 | 1
| 3 | 1 | 1
| 3 | 2 | 2
| 3 | 3 | 3
结果应该以增量顺序开始,从1开始,基于 id1
以及 id2
. 任何关于如何在scala中实现这一点的提示。 row_number
在这种情况下似乎没有用。
这里的逻辑是 id1
我们将用min开始计算结果( id2
)对应的 id1
赋值为1。
2条答案
按热度按时间djmepvbi1#
你可以试试密级()
以你为例
输出
guz6ccqo2#
使用
Window
俱乐部职能(partition
)他们first id
然后order
每个partition
基于second id
.现在你只需要分配一个等级(
dense_rank
)在每个Window
分区。