如何在Spark中实现支持多粒度匹配键的左连接?
薪资涨幅规则匹配与表合并问题
我有一张代表公司所有员工薪资的样本表:
| PLANT | DEPTO | NAME | SALARIES |
|---|---|---|---|
| 1 | MG | KEVIN | 1.100 |
| 2 | SP | ETHAN | 1.200 |
| 3 | DF | JUAN | 1.200 |
| 4 | SP | BETH | 110 |
| 5 | SP | JOHN | 1.000 |
同时还有一张代表薪资涨幅规则的表:
| INCREASE_ID | PLANT | DEPTO | NAME | FACTOR |
|---|---|---|---|---|
| IC1 | 1 | MG | 1.2 | |
| IC2 | 2 | SP | 1.4 | |
| IC3 | 3 | DF | 1.3 | |
| IC4 | 4 | SP | BETH | 1.3 |
| IC5 | SP | 1.02 |
涨幅规则可累积应用,只要任一匹配键符合条件。例如,ETHAN可获得两项涨幅的组合:
- IC2:因PLANT=2且DEPTO=SP匹配
- IC5:因DEPTO=SP匹配
我的目标是将两张表合并为如下结果表:
| PLANT | DEPTO | NAME | VALUE | LIST_OF_INCREASE_ID | FACTOR_COMBINED |
|---|---|---|---|---|---|
| 1 | MG | KEVIN | 1.100 | IC1 | 1,20 |
| 2 | SP | ETHAN | 1.200 | IC2 and IC5 | 1,43 (1,4 * 1,02) |
| 3 | MG | JUAN | 1.200 | 1,00 | |
| 4 | SP | BETH | 110 | IC4 and IC5 | 1,33 (1,3 * 1,02) |
| 5 | SP | JOHN | 1.000 | IC5 | 1,02 |
请问是否有可行的方法或连接类型,能在PLANT、DEPTO或NAME任一匹配时避免空值情况?
内容的提问来源于stack exchange,提问作者Siq_
相关产品推荐
相关产品推荐

