1. 程式人生 > >hsql中split函式,lateral view explode的常規用法

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%';