我有一个输入日期,但如下所示:df_inp
customer_id |ph_num|date |
1 |123 |2020-10-01|
2 |456 |2020-10-01|
3 |789 |2020-10-01|
1 |654 |2020-10-02|
2 |543 |2020-10-03|
1 |908 |2020-10-04|
4 |123 |2020-10-02|
我需要获取每个日常流程的最新记录。因此,我尝试使用Windows rank()操作,它可以正常工作。但是,由于要输入数百万个数据以优化性能,因此我们可以使用任何其他spark操作来基于customer_id和按日期值订购来获取最新数据。
window_func = Window.partition_by("customer_id ").orderBy("date")
df = df.withColumn("rank", rank().over(window_func))
df = df.filter(df.rank == "1")
在这里,customer_id-字符串和日期-时间戳记