我花了5分钟才拿出这个la脚的头衔,因为问题是如此复杂。
field1 field2 field3
A A1 50
A A2 70
B B1 30
B B2 30
B B3 30
C C1 45
C C2 55
D D1 80
D D2 40
D D3 50
field1 field2 field3 field4 field5
A A1 50 50 0
A A2 70 50 20
B B1 30 30 0
B B2 30 30 0
B B3 30 30 0
C C1 45 45 0
C C2 55 55 0
D D1 80 80 0
D D2 40 20 20
D D3 50 0 50
逻辑:
field1
是需要进行分组的关键列。
对于每个组,基于field4
,最多可以在field3
中分配100个。
一旦超过100,其余的将进入field5
。
例如: 与字段1“ A”组成的组,第一行字段3为50。在100中,整个50进入字段4。该组的第二行是70,而最初的100仅剩50。因此,50进入字段4,其余20进入字段5。 有没有办法纯粹在pyspark-sql中获得逻辑?