我的数据是这样的,状态是0或1,uid是用户ID。
uid |timestamp |status
1 |1 | 0
2 |3 | 1
1 |2 | 1
2 |1 | 0
1 |3 | 1
2 |2 | 0
2 |4 | 0
我想按 uid 进行数据分区,并按时间戳 asc 排序。
uid |timestamp |status
1 |1 | 0
1 |2 | 1
1 |3 | 1
2 |1 | 0
2 |2 | 0
2 |3 | 1
2 |4 | 0
并连续获得相同的状态,并让他们做其他事情。对不起,我的英语是...狗屎。辰是这样的:
uid |status |timestamps-asc-order
1 |(0) | (1)
1 |(1,1) | (2,2)
2 |(0,0) | (1,2)
2 |(1) | (3)
2 |(0) | (4)
我可以使用窗口功能进行分区和排序。但是,如何获得连续相同的状态?
val window = Window.partitionBy("uid").orderBy($"timestamp".asc)
欢迎来到 StackOverflow。
您正在寻找collect_list功能。
你应该能够实现你的要求与
df.withColumn("timestamps-asc-order", collect_list("timestamp").over(Window.partitionBy("uid").orderBy("timestamp"))