[英]How to get the N most recent dates in Pyspark
有沒有辦法為 Pyspark 中的每組數據獲取最近 30 天的記錄? 在此示例中,獲取 (Grouping, Bucket) 分組內具有最新日期的 2 條記錄。 所以像這樣的桌子
| 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|
+--------+------+----------+
編輯:此答案適用於此修訂版(獲取每個組的最新 N 條記錄)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.