gpt4 book ai didi

python - 如何在 Pyspark 中获取最近的 N 个日期

转载 作者:行者123 更新时间:2023-12-04 14:11:15 24 4
gpt4 key购买 nike

有没有办法获取 Pyspark 中每组数据的最近 30 天的记录?在此示例中,获取 (Grouping, Bucket) 分组中日期最近的 2 条记录。所以像这样的 table

| Grouping | Bucket | Date      |
|----------|--------|-----------|
| 1 | 1 | 9-20-2020 |
| 1 | 1 | 9-16-2020 |
| 1 | 1 | 8-14-2020 |
| 1 | 2 | 9-20-2020 |
| 1 | 2 | 9-16-2020 |
| 1 | 2 | 8-14-2020 |
| 2 | 1 | 9-20-2020 |
| 2 | 1 | 9-16-2020 |
| 2 | 1 | 8-14-2020 |

会变成这样:

| Grouping | Bucket | Date      |
|----------|--------|-----------|
| 1 | 1 | 9-20-2020 |
| 1 | 1 | 9-16-2020 |
| 1 | 2 | 9-20-2020 |
| 1 | 2 | 9-16-2020 |
| 2 | 1 | 9-20-2020 |
| 2 | 1 | 9-16-2020 |

编辑:我在编辑后回顾了我的问题,并意识到一开始不进行编辑是正确的选择

最佳答案

使用 window并拿下前两名ranks在每个窗口内:

df.withColumn("r", F.rank().over(Window.partitionBy("Grouping", "Bucket") \
.orderBy(F.col("Date").desc()))) \
.filter("r <=2") \
.drop("r") \
.show()

输出:

+--------+------+----------+
|Grouping|Bucket| Date|
+--------+------+----------+
| 1| 1|2020-09-20|
| 1| 1|2020-09-16|
| 1| 2|2020-09-20|
| 1| 2|2020-09-16|
| 2| 1|2020-09-20|
| 2| 1|2020-09-16|
+--------+------+----------+

编辑:此答案适用于 this revision (获取每组最近的N条记录)。

关于python - 如何在 Pyspark 中获取最近的 N 个日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64143337/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com