【发布时间】:2018-10-07 15:35:49
【问题描述】:
我需要在 pyspark 数据帧上的事件之间创建一个计数器,如下所示:
输入:
+-------+----+------+
|machine|date|event |
+-------+----+------+
| M1 |DAY1| 1|
| M1 |DAY2| 0|
| M1 |DAY3| 0|
| M1 |DAY4| 1|
| M1 |DAY5| 0|
+-------+----+------+
预期输出:
+-------+----+------+----------------------+
|machine|date|event |days since last event |
+-------+----+------+----------------------+
| M1 |DAY1| 1| 0|
| M1 |DAY2| 0| 1|
| M1 |DAY3| 0| 2|
| M1 |DAY4| 1| 3|
| M1 |DAY5| 0| 1|
+-------+----+------+----------------------+
我看到了 Window 函数,但我不知道如何创建一个 if 语句,它会在遇到另一个标志事件后重新启动计数器。
关于我该怎么做的任何想法?
【问题讨论】:
-
您需要在
machine列上分组还是事件序列与机器无关? -
@pansen 依赖机器,当机器组结束时,计数器也必须重新启动
标签: python-3.x pyspark apache-spark-sql