日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

join left semi_HIVE--left semi join

發(fā)布時間:2023/12/2 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 join left semi_HIVE--left semi join 小編覺得挺不錯的,現(xià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ù)都列出來了,如果右邊表沒有對應(yīng)的列,則寫成了NULL值。如果左邊的主鍵在右邊找到了N條,那么結(jié)果也是會叉乘得到N條。hive不支持’left join’的寫法。

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)出來,如果主鍵在右邊表中存在,則打印,否則過濾掉,相當(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)出來

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

總結(jié):

hive不支持’left join’的寫法;

hive的left outer join:如果右邊有多行和左邊表對應(yīng),就每一行都映射輸出;如果右邊沒有行與左邊行對應(yīng),就輸出左邊行,右邊表字段為NULL;

hive的left semi join:相當(dāng)于SQL的in語句,結(jié)果沒有右表數(shù)據(jù)。

來自 “ ITPUB博客 ” ,鏈接:http://blog.itpub.net/30289795/viewspace-2139756/,如需轉(zhuǎn)載,請注明出處,否則將追究法律責(zé)任。

總結(jié)

以上是生活随笔為你收集整理的join left semi_HIVE--left semi join的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。