<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Hive數(shù)據(jù)庫join操作雷區(qū)

          共 1559字,需瀏覽 4分鐘

           ·

          2021-12-27 13:49

          基礎(chǔ)操作測試

          首先準備兩張表收入表 hive_join_gaap_test 和 信息表 hive_join_pl_test,表內(nèi)容如下:

          select * from hive_join_pl_test;


          hive_join_pl_testselect * from hive_join_gaap_test;

          hive_join_gaap_test

          1、LEFT OUTER JOIN

          select a.clid, a.pid, b.pid, b.plname, a.gaap from hive_join_gaap_test a left outer join hive_join_pl_test b on a.pid = b.pid;

          LEFT OUTER JOIN

          1)若右表連接key沒有重復,行數(shù)等于左表;

          2)若右表連接key有重復,則左表相關(guān)key行數(shù)就會 * 重復次數(shù);所以,這里是個巨坑。左連接右表的key不能重復。

          3)以左表key為基礎(chǔ),包含左表全部行,匹配不到左表key及其他字段為NULL,這很基礎(chǔ)不講了。

          2、RIGHT OUTER JOIN

          select a.clid, a.pid, b.pid, b.plname, a.gaap from hive_join_gaap_test a right outer join hive_join_pl_test b on a.pid = b.pid;

          RIGHT OUTER JOIN

          注:與左連接正好相反,沒什么好講的。切記,左連接右表的key不能重復,右連接左表的key不能重復,否則基礎(chǔ)表相關(guān)key行數(shù)就會 * 信息表key重復次數(shù)。

          3、INNER JOIN

          select a.clid, a.pid, b.pid, b.plname, a.gaap from hive_join_gaap_test a inner join hive_join_pl_test b on a.pid = b.pid;

          INNER JOIN

          1)兩表key交集以外的行會被去除,這么什么好講的,inner join精髓就是取交集,往往用來過濾信息表key以外的收入;

          2)兩表key取笛卡爾積,若信息表key重復,收入依然會 * 信息表key重復次數(shù)。

          4、JOIN

          select a.clid, a.pid, b.pid, b.plname, a.gaap from hive_join_gaap_test a join hive_join_pl_test b on a.pid = b.pid;

          JOIN

          注:和 INNER JOIN 一樣,不再贅述;Hive 不支持 / LEFT INNER JOIN / RIGHT INNER JOIN.

          5、FULL OUTER JOIN

          select a.clid, a.pid, b.pid, b.plname, a.gaap from hive_join_gaap_test a full outer join hive_join_pl_test b on a.pid = b.pid;

          FULL OUTER JOIN

          由上可見,連接操作雷區(qū)有兩個:

          1)四種連接,首先要清楚取交集、左集合、右集合、還是并集,清楚哪些行會被去除。

          2)若信息表key重復,則根據(jù)笛卡爾積,收入表就會乘以相應key重復次數(shù)。

          作者:朝思暮巷
          鏈接:https://www.jianshu.com/p/677120c48cfc

          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  久久超| 亚洲成人黄色网 | 亚洲性爱网络 | 亚洲精品一区二区三小电影 | 欧美综合一区 |