一、行轉列express
場景:在hive表中,一個用戶會有多我的羣標籤,List格式(逗號分隔如要轉成List),有時咱們須要統計一我的羣標籤下有少用戶,這是就須要使用行轉列了segmentfault
例如,user_crowd_info有以下數據ide
visit_id crowds abc [100,101,102] def [100,101] abe [101,105]
能夠使用的函數函數
select explode(crowds) as crowd from user_crowd_info; 結果: 100 101 102 100 101 101 105
這樣執行的結果只有crowd, 可是咱們須要完整的信息,使用select visit_id, explode(crowds) as crowd from user_crowd_info;
是不對的,會報錯UDTF's are not supported outside the SELECT clause, nor nested in expressions
學習
因此咱們須要這樣作:區塊鏈
select visit_id,crowd from user_crowd_info t lateral view explode(t.crowds) adtable as crowd;
二、列轉行spa
使用concat_ws函數便可code
select visit_id,concat_ws(,crowd) from user_crowd_info group by visit_id;