溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶(hù)服務(wù)條款》

HIVE中l(wèi)eft semi join怎么用

發(fā)布時(shí)間:2021-12-10 14:13:10 來(lái)源:億速云 閱讀:494 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了HIVE中l(wèi)eft semi join怎么用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

 實(shí)驗(yàn):
hive> select * from b1;
OK
1       003     20170511
1       004     20170512
1       005     20170513
2       006     20170514
3       007     20170515
Time taken: 0.041 seconds
hive> select * from b2;
OK
1       005     20170513
2       006     20170514
3       007     20170515
Time taken: 0.049 seconds
hive> select * from b1 a left outer join b2 b on a.id=b2.id; ----左邊表的數(shù)據(jù)都列出來(lái)了,如果右邊表沒(méi)有對(duì)應(yīng)的列,則寫(xiě)成了NULL值。如果左邊的主鍵在右邊找到了N條,那么結(jié)果也是會(huì)叉乘得到N條。hive不支持’left join’的寫(xiě)法。
OK
1       003     20170511        1       005     20170513
1       004     20170512        1       005     20170513
1       005     20170513        1       005     20170513
2       006     20170514        2       006     20170514
3       007     20170515        3       007     20170515
hive> select * from b1  left semi join b2  on b1.id=b2.id; ---在關(guān)聯(lián)字段b2表里有的,b1表都展現(xiàn)出來(lái),如果主鍵在右邊表中存在,則打印,否則過(guò)濾掉,相當(dāng)于in
OK
1       003     20170511
1       004     20170512
1       005     20170513
2       006     20170514
3       007     20170515
hive> select * from b1 left outer join b2 on b1.id=b2.id and b1.dat=b2.dat;  
OK
1       003     20170511        NULL    NULL    NULL
1       004     20170512        NULL    NULL    NULL
1       005     20170513        1       005     20170513
2       006     20170514        2       006     20170514
3       007     20170515        3       007     20170515

hive> select * from b1 left semi join b2 on b1.id=b2.id and b1.dat=b2.dat;---在b2表有的都展現(xiàn)出來(lái)
OK
1       005     20170513
2       006     20170514
3       007     20170515

再如:
hive> select * from b1;
OK
1       003     20170511
1       004     20170512
1       005     20170513
2       006     20170514
3       007     20170515
4       008     20170518
Time taken: 0.042 seconds
hive> select * from b2;
OK
1       005     20170513
2       006     20170514
3       007     20170515
Time taken: 0.053 seconds

hive> select * from b1 left outer join b2 on b1.id=b2.id and b1.dat=b2.dat;
OK
1       003     20170511        NULL    NULL    NULL
1       004     20170512        NULL    NULL    NULL
1       005     20170513        1       005     20170513
2       006     20170514        2       006     20170514
3       007     20170515        3       007     20170515
4       008     20170518        NULL    NULL    NULL
hive> select * from b1 left semi join b2 on b1.id=b2.id and b1.dat=b2.dat;---更能證明只展現(xiàn)關(guān)聯(lián)條件在右表有的數(shù)據(jù),相當(dāng)于in
OK
1       005     20170513
2       006     20170514
3       007     20170515


        hive不支持’left join’的寫(xiě)法;
        hive的left outer join:如果右邊有多行和左邊表對(duì)應(yīng),就每一行都映射輸出;如果右邊沒(méi)有行與左邊行對(duì)應(yīng),就輸出左邊行,右邊表字段為NULL;
        hive的left semi join:相當(dāng)于SQL的in語(yǔ)句,結(jié)果沒(méi)有右表數(shù)據(jù)。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“HIVE中l(wèi)eft semi join怎么用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI