hsql中split函式,lateral view explode的常規用法
1.split()函式
hsql中split(item,'分隔符')
2.lateral view
explode將複雜結構一行拆成多行,實現行轉列,如
id name
1 hell,hao,de
select explode(split(name,',')) from tablename;
id name
1 hello
1 hao
1 he
Lateral view:lateral view用於和split、explode等UDTF一起使用的,能將一行資料拆分成多行資料,在此基礎上可以對拆分的資料進行聚合,lateral view首先為原始表的每行呼叫UDTF,UDTF會把一行拆分成一行或者多行,lateral view在把結果組合,產生一個支援別名表的虛擬表。
select id,name2 from tablename lateral view explode(split(name,’,’)) c as name2;
c是虛擬表的表名(必填),name2是分割欄位的新名字;
輸出: id name2
1 hello
1 hao
1 he
生成虛擬表之後,可以對虛擬表聚合計算
例項:
select count(distinct a.thrknow) from (select distinct thrknow from dm_questlabel.fact_quest_label
lateral view explode(split(three_know,'\\^\\.\\^')) c AS thrknow
where questinnersource=4 and subject='C01' and fastdfsurl like 'group%' and docfastdfsurl
like 'group%' and pngfastdfsurl like 'group%';