hive的sql之行轉列和列轉行

2021-10-11 03:26:07 字數 1418 閱讀 1603

collect_set(要聚合的一列欄位名)

-- 去重

collect_list(要聚合的一列欄位名) 這兩個都是聚合函式 將一列資料聚集成乙個陣列集合

select collect_set(要聚合的一列欄位名)

from 加表名 ;

concat_ws(拼接符,可變個數的字串或陣列)   可以拼接字串也可以拼接陣列中的元素

select concat_ws(

',',

'a',

'b')

; 返回的是a,b 把這倆字串用逗號拼接

select concat_ws(

',', array(

'a',

'b')

); 返回的是a,b 把陣列中的元素用逗號拼接

explode(陣列或者map集合)   會將這個資料組以列得 形式展示出來   

select explode(array(

'1',

'2',

'3')

); 返回的就是豎著的123

tb_movie2   表名

+--------+-----------------------------+

| name | categorys |

+--------+-----------------------------+

| 《八佰》 |

["戰爭"

,"動作"

,"抗日"

,"劇情"]|

| 《姜子牙》 |

["動畫"

,"神話"

,"科幻"

,"動作"

,"倫理"]|

| 《戰狼2》 |

["戰爭"

,"動作"

,"災難"]|

+--------+-----------------------------+

select 

explode(split(categorys ,

',')

) split切割這個字串再explode炸裂開變成豎著的

from

tb_movie2 ;

select

name ,

tpfrom

tb_movie2

lateral view 用了乙個測視窗函式把炸裂開的和原表關聯拼接

explode(split(categorys ,

',')

) t as tp ;

t 表名

tp 虛擬表的欄位名

Hive經典SQL之行轉列,列轉行

前言 目前做離線資料計算,由於之前沒有完整的數倉功能,前兩天把cdh的配置和自己的 又除錯了一遍,目前資料已經進入到hive原始資料ods層。使用到了這個經典函式,在這裡記錄一下。版本 hive 1.1.0 建立表挺簡單的,這裡就不演示了。stu name course score 張三語文 98張...

HIve之行轉列,列轉行操作

行轉列 將類似如下資料轉為,特徵值,標記資料 表名為test 3列c1,c2,c3資料如下 a,b,1 a,b,2 a,b,3 c,d,4 c,d,5 d,f 6 多行轉換為一列 select c1,c2,concat ws collect set c3 from test group by c1,...

hive 列轉行和行轉列

1.假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的位址資訊等,表資料假設如下 user basic info id name1a 2b3c 4duser address name address aadd1 aadd2 badd3 cadd4 dadd5 id na...