行转列 将多行的数据合并到一列中
collect_set(要聚合的一列字段名)
collect_list(要聚合的一列字段名) 这两个都是聚合函数 将一列数据聚集成一个数组集合
select collect_set(要聚合的一列字段名) from 加表名 ;
concat_ws 拼接
concat_ws(拼接符,可变个数的字符串或数组) 可以拼接字符串也可以拼接数组中的元素
select concat_ws(',','a','b') ; 返回的是a,b 把这俩字符串用逗号拼接
select concat_ws(',', array('a','b')) ; 返回的是a,b 把数组中的元素用逗号拼接
explode 炸裂函数
explode(数组或者map集合) 会将这个数据组以列得 形式展示出来
select explode(array('1','2','3')); 返回的就是竖着的123
lateral view 测窗口函数
tb_movie2 表名
+
| name | categorys |
+
| 《八佰》 | ["战争","动作","抗日","剧情"] |
| 《姜子牙》 | ["动画","神话","科幻","动作","伦理"] |
| 《战狼2》 | ["战争","动作","灾难"] |
+
select
explode(split(categorys , ',')) split切割这个字符串再explode炸裂开变成竖着的
from
tb_movie2 ;
select
name ,
tp
from
tb_movie2
lateral view 用了一个测窗口函数把炸裂开的和原表关联拼接
explode(split(categorys , ',')) t as tp ;
t 表名
tp 虚拟表的字段名