有没有办法获取 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 |
编辑:我在编辑后回顾了我的问题,并意识到一开始不进行编辑是正确的选择
最佳答案
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/