如何解决如何获取Pyspark中的N个最近日期
是否有办法为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|
+--------+------+----------+
编辑:此答案适用于this revision(获取每个组的最新N条记录)。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。