<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行列轉(zhuǎn)換

          共 1459字,需瀏覽 3分鐘

           ·

          2021-03-05 21:39

          之前寫過一篇SQL行列轉(zhuǎn)換,主要是使用 max(case when ... then ... else ...  end) 行轉(zhuǎn)列,union 列轉(zhuǎn)行。在 Hive 中同樣也提供了兩種方式進(jìn)行行列轉(zhuǎn)換。

          lateral view explode 列轉(zhuǎn)行

          lateral view 和 explode 將 hive 一系列中復(fù)雜的 array 或者 map 結(jié)構(gòu)拆分成多行數(shù)據(jù),在此基礎(chǔ)上可以對(duì)拆分后的數(shù)據(jù)進(jìn)行聚合。

          思路:

          1. 先用 split 函數(shù)將 C 列分割成數(shù)組;
          2. 再使用 lateral view 結(jié)合 explode 炸裂。
          select A, B, C_new from table1
          lateral view explode(split(C,",")) temp_table AS C_new;

          concat_ws 行轉(zhuǎn)列

          • concat(str1, str2):返回輸入字符串連接后的結(jié)果,支持任意個(gè)輸入字符串。
          • concat_ws(separator,str1,str2,...):它是一個(gè)特殊形式 concat,第一個(gè)參數(shù)為分隔符,如果分隔符是 NULL,返回值也將為 NILL,這個(gè)函數(shù)會(huì)跳過分隔符參數(shù)后的任何 NULL 和空字符串,分隔符被加到被連接的字符串之間。
          • collect_set(col):函數(shù)只接受基本數(shù)據(jù)類型,它的主要將某字段的值進(jìn)行去重匯總,產(chǎn)生 array 類型字段。

          思路:

          1. 先使用 concat(constellation,",",blood_type),將星座和血型連接;
          2. 用 collect_set 函數(shù)對(duì) name 聚合;
          3. 用 concat_ws 函數(shù)對(duì)聚合后的 name 用"|"分割。
          select 
                   constellation_blood_type  ,
                   concat_ws("|",collect_set(name))
          from 
                   (select 
                  concat(constellation,",",blood_type) constellation_blood_type  
                  name
          from 
                 person_info)t1   
          group by constellation_blood_type ;
          瀏覽 37
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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>
                  日韩www在线 | 免费欧美性爱 | 天天干 夜夜操 | 爱逼爱操| 欧美日韩中文字幕在线 |