我在pyspark中有一个Dataframe描述服务的状态,如下所示。我接收服务状态更新的频率不是恒定的。
更新的状态时间戳:020-01-01 14:30:00ok2020-01-01 14:15:00broken2020-01-01 14:10:00broken2020-01-01 14:00:00broken2020-01-01 13:40:00broken2020-01-01 13:35:00ok2020-01-01 13:15:00ok2020-01-01 13:00:00ok2020-01-01 12:40:00
基于此,我想创建一个列,提供自上次更新以来满足以下条件的时间:
如果状态为“ok”,并且服务一直在运行而没有出现问题,则表示自上次更新以来的时间差。
当状态报告为“坏”时,我想要服务停止后的时间。
当状态再次恢复为ok时,则差值应为零。
所以,最终的数据集应该是这样的。
状态时间戳\u updatetime \u gone \u byok2020-01-01 14:30:0015minsok2020-01-01 14:15:000MINSBROKEN020-01-01 14:10:0055MINSBROKEN020-01-01 14:00:0045MINSBROKEN020-01-01 13:40:0025MINSROKEN020-01-01 13:35:0020minsok2020-01-01 13:15:0015minsok2020-01-01 13:00:0020minsok2020-01-01 12:40:00
有人知道如何在Pypark中做到这一点吗?谢谢!
1条答案
按热度按时间xytpbqjk1#
您可以创建一些帮助器列来检查所需的条件:
结果:
幕后: