[英]Joining multiple tables multiple ways
我有 5 個如下表:表 A
秩。 | 輸入。 |
---|---|
0。 | 啊 |
1. | bb |
2 | 抄送 |
3 | dd |
表 B
秩。 | 輸入。 |
---|---|
0。 | 啊 |
3 | 抄送 |
4 | dd |
5 | ee |
表C
秩。 | 輸入。 |
---|---|
0。 | 啊 |
5 | ee |
6 | ff |
7 | gg |
表 D
秩。 | 輸入。 |
---|---|
0。 | 啊 |
2 | bb |
6 | ff |
7 | gg |
我需要 output 如下所示:
決賽桌
秩。 | 輸入。 |
---|---|
0。 | 啊 |
2 | bb |
3 | 抄送 |
5 | ee |
6 | ff |
7 | gg |
如果我只是根據最大的表交叉連接所有表,我會得到以下 output:
秩。 | 輸入。 |
---|---|
0。 | 啊 |
有沒有辦法獲得我想要的 output 而無需跨 AB、BC、CD、BD 等進行多次連接。
請告訴我。 我可以使用 SQL 或 Pyspark 來執行此操作。 任何建議,將不勝感激。
您可以合並所有表,按輸入分組並獲得排名的最大值:
select max(`rank`) as `rank`, input
from (
select * from tableA
union all
select * from tableB
union all
select * from tableC
union all
select * from tableD
) t
group by input
在 Pyspark 它將是
from functools import reduce
df = reduce(lambda a, b: a.unionAll(b), [tableA,tableB,tableC,tableD])
result = df.groupBy('input').agg(F.max('rank').alias('rank'))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.