簡體   English   中英

基於優先級的匹配ID-SQL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM