Pyspark 超过阈值后重置的累积总和

Pyspark 超过阈值后重置的累积总和,pyspark,Pyspark,一般来说,我对pyspark和python比较陌生。这可能很琐碎,但我不太明白 我有一个数据集,它包含一个ID、一个日期列和一个包含浮点数的X列。我想做的是,在ID和按日期排序的基础上,计算运行总数X。当运行总数超过值Y时,重新启动总数。下面是一个示例,其中Y=20: |ID |DATE | X | cumsum_X | ----------------------------------- | 1| 2017-03-01| 10| 10| | 1|

一般来说,我对pyspark和python比较陌生。这可能很琐碎,但我不太明白

我有一个数据集,它包含一个ID、一个日期列和一个包含浮点数的X列。我想做的是,在ID和按日期排序的基础上,计算运行总数X。当运行总数超过值Y时,重新启动总数。下面是一个示例,其中Y=20:

|ID |DATE        | X   | cumsum_X |
-----------------------------------
|  1|  2017-03-01|   10|        10|
|  1|  2017-03-02|   12|        22|
|  1|  2017-03-03|    5|         5|
|  1|  2017-03-04|   10|        15|
|  2|  2015-01-01|    6|         6|
|  2|  2015-01-03|    7|        13|
我已经能够计算组的累积和,并使用下面的代码正确排序,但我不确定如何修改它以获得我想要的重置行为

win=(窗口(partitionBy('ID')。结束('DATE'))
.rangeBetween(Window.unbounddpreceiding,0))
df=df.withColumn('cumsum_x',F.Sum('x')。结束(胜利))

对于分布式系统来说,这似乎是一项困难的任务:每个ID的最后一个累积值可以由该ID的其他每个值更改。也许您可以创建一个X值的有序列表,然后计算每行的累积值。您找到答案了吗?对于分布式系统来说,这似乎是一项困难的任务:最后一个累积值每个ID的值都可以由该ID的其他每个值更改。也许您可以制作一个X值的有序列表,然后计算每行的累积值X您找到答案了吗?