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...