並不是真正意義上的行轉列、列轉行。
只是這樣叫的。
concat(stringa,stringb,stringc):返回輸入字串拼接後的結果,支援輸入任意多個字串
測試結果:
可以連線任意多個:
concat_ws(「分隔符」,stringa,stringb):是乙個特殊的concat(),第乙個引數是引數間的分隔符(或者說是拼接符),如果拼接福是null。返回值也是null。
需要注意的是,拼接的必須是字串,拼接資料庫表字段的時候,只能是字串型別才行。
測試結果:
collect_set(col):函式只接受基本資料型別,主要是將某欄位資料去重,整合成array型別。
測試結果:
單獨好像沒啥用,可以concat_ws和collect_set聯用。
表資料:
name
constellation
blood_type
八戒白羊座a猴哥
射手座a
鬆鬆白羊座
b豬八戒
白羊座a
鳳姐射手座
a需要得到的結果:
射手座,a 猴哥|鳳姐先存入hdfs檔案中白羊座,a 八戒|豬八戒
白羊座,b 鬆鬆
vim person.txt建立hive表並匯入資料八戒 白羊座 a
猴哥 射手座 a
鬆鬆 白羊座 b
豬八戒 白羊座 a
鳳姐 射手座 a
create
table person_info(
name string,
xingzuo string,
blood_type string)
row format delimited fields
terminated
by"\t"
;load
data
local inpath '/opt/module/datas/person.txt'
into
table person_info;
按需求查詢
先將第一列合併,得到乙個中間結果
接著得到最終結果:
注意:collect_set()是個聚合函式,需要和group by一同使用
直接根據案例來學習兩個函式:
explode(col):將hive一列中複雜的array或者map結構拆分成多行。
英文意思:**
lateral view
用法:lateral view udtf(expression) tablealias as columnalias
解釋:用於和split, explode等udtf一起使用,它能夠將一列資料拆成多行資料,在此基礎上可以對拆分後的資料進行聚合。
資料準備:
movie
category
《福爾摩斯》
懸疑,動作,科幻,劇情
《無間道》
懸疑,警匪,動作,心理,劇情
《紅海行動》
戰爭,動作,災難
需求
《福爾摩斯》 懸疑hdfs上建立檔案《福爾摩斯》 動作
《福爾摩斯》 科幻
《福爾摩斯》 劇情
《無間道》 懸疑
《無間道》 警匪
《無間道》 動作
《無間道》 心理
《無間道》 劇情
《紅海行動》 戰爭
《紅海行動》 動作
《紅海行動》 災難
vi movie.txt建立hive表並匯入《福爾摩斯》 懸疑,動作,科幻,劇情
《無間道》 懸疑,警匪,動作,心理,劇情
《紅海行動》 戰爭,動作,災難
create
table movie_info(
movie string,
category array
)row format delimited fields
terminated
by"\t"
collection items terminated
by","
;load
data
local inpath "/opt/module/datas/movie.txt"
into
table movie_info;
先測試explode**函式:
得到結果:
然後再按需求查:
select
movie,
category_name
from
movie_info lateral view explode(category) table_tmp as category_name;
即可得到結果。 Hive行轉列,列轉行
下面舉兩個例子 例一 行轉列 資料 a b 1 a c 2 a b 3 c d 4 c d 5 c d 6 轉化為 a b 1,2,3 c d 4,5,6 創表hive create table test1 col1 string,col2 string,col3 string row format...
hive 列轉行 HQL 行轉列,列轉行
1 相關函式 concat string a col,string b col 返回輸入字串連線後的結果,支援任意個輸入字串 concat ws separator,str1,str2,它是乙個特殊形式的 concat 第乙個引數剩餘引數間的分隔符。分隔符可以是與剩餘引數一樣的字串。如果分隔符是 n...
hive 列轉行和行轉列
1.假設我們在hive中有兩張表,其中一張表是存使用者基本資訊,另一張表是存使用者的位址資訊等,表資料假設如下 user basic info id name1a 2b3c 4duser address name address aadd1 aadd2 badd3 cadd4 dadd5 id na...