【发布时间】:2020-10-02 02:39:23
【问题描述】:
有没有办法为 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 |
编辑:我在编辑后查看了我的问题,并意识到不进行编辑是正确的选择
【问题讨论】:
-
您是否尝试按今天 - 30 天过滤日期列?例如使用
date_sub? -
@OneCricketeer 我没有。这将如何在 filter() 中工作?
-
类似
df.filter(df("Date") >= date_sub(current_date(), 30)),不过,通常使用YYYY-mm-dd格式更适合此类查询 -
此过滤器如何帮助选择组中的前 2 名? @OneCricketeer
-
@A.B 我也想知道。问题已由 user7298979 更改
标签: python apache-spark pyspark apache-spark-sql