【发布时间】:2022-07-04 16:42:48
【问题描述】:
我有一个每日用户表:(此处仅表示为几个日期的示例)
| user | date |
|---|---|
| A | 20220410 |
| B | 20220410 |
| C | 20220410 |
| D | 20220410 |
| A | 20220425 |
| B | 20220425 |
| C | 20220425 |
| D | 20220425 |
| A | 20220501 |
| B | 20220501 |
| C | 20220501 |
| D | 20220501 |
| A | 20220525 |
| B | 20220525 |
| C | 20220525 |
| D | 20220525 |
我有第二个每月属性表为:
| user | dt | code |
|---|---|---|
| A | 20220322 | 00 |
| B | 20220322 | 01 |
| C | 20220322 | 02 |
| D | 20220322 | 03 |
| A | 20220420 | 100 |
| B | 20220420 | 101 |
| C | 20220420 | 102 |
| D | 20220420 | 103 |
| A | 20220523 | 201 |
| B | 20220523 | 202 |
| C | 20220523 | 203 |
| D | 20220523 | 204 |
属性表一般在第 3 周更新(日期不固定,此处为“20220420”和“20220523”)。 问题 - 我有 2 年的历史数据(以百万计)。我想在用户表和更新的属性表上加入这个表。 IE。从 20220322 到 20220419 的用户应该获得代码为 (00,01,02,03)。从 20220420 到 20220522 的用户应该从 (100,101,102,103) 获取代码
预期表:
| user | date | code |
|---|---|---|
| A | 20220410 | 00 |
| B | 20220410 | 01 |
| C | 20220410 | 02 |
| D | 20220410 | 03 |
| A | 20220425 | 101 |
| B | 20220425 | 102 |
| C | 20220425 | 103 |
| D | 20220425 | 104 |
| A | 20220501 | 101 |
| B | 20220501 | 102 |
| C | 20220501 | 103 |
| D | 20220501 | 104 |
| A | 20220525 | 201 |
| B | 20220525 | 202 |
| C | 20220525 | 203 |
| D | 20220525 | 204 |
我如何在 pyspark 中做到这一点..
【问题讨论】:
标签: python sql join pyspark apache-spark-sql