我有pyspark Dataframe ,包含以下列:
- 会话标识
- 时间戳
data = [(("ID1", "2021-12-10 10:00:00")),
(("ID1", "2021-12-10 10:05:00")),
(("ID2", "2021-12-10 10:20:00")),
(("ID2", "2021-12-10 10:24:00")),
(("ID2", "2021-12-10 10:26:00")),
]
我想对会话进行分组,并添加一个名为duration的新列,它是该会话最早和最新时间戳之间的差值(以秒为单位):
ID1: 300
ID2: 360
如何实现?
谢谢你,
1条答案
按热度按时间zwghvu4y1#
可以使用collect_list这样的聚合函数,然后对列表执行max和min操作,要获得以秒为单位的持续时间,可以将时间值转换为unix_timestamp,然后执行求差。
试试这个: