[英]Match ID based on priority - SQL
我需要根據另一個表的優先級來匹配ID。 哪種方法是最有效和最佳的方法?
Table 1:
cd priority
1 10
2 20
3 30
4 40
5 50
Table 2:
ID cd
1001 2
1001 4
1001 5
1002 1
1002 3
1002 5
1003 6
Expected Output:
ID cd
1001 2
1002 1
我已經提到了我嘗試過的內容,但是想知道在此情況下,hive / spark中是否有可以利用的功能。
select * from (select tb1.cd, tb2.id , tb1.priority, RANK() OVER (PARTITION BY tb2.id ORDER BY tb1.priority ) rnk
from Table1 tb1
inner join
Table2 tb2
on tb1.cd = tb2.cd) a
where a.rnk =1
在您的方案中,第一個表似乎足夠小以適合內存。 如果是這樣,請確保spark廣播它以執行連接。
您可以使用explain
查看火花生成的計划。 如果您沒有看到正在廣播,請在執行查詢時指定提示。
希望能幫助到你!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.