表生成函数
行转列函数:explode() (炸裂)
在hdp-3下新建表格t_stu_subject:
>create table school.t_stu_subject(id int,name string,subjects array<string>)
>row format delimited fields terminated by ','
> collection items terminated by ':';在hdp-4中查看表格是否建好:
show databases;
use school;
show tables;表格中出现如下数据:
在hap-3中新建文件t_stu_subject并插入以下数据:
vi t_stu_subject1,zhangsan,化学:物理:数学:语文
2,lisi,化学:数学:生物:生理:卫生
3,wangwu,化学:语文:英语:体育:生物再把新建t_stu_subject的文件导入到新建的表格中:
load data local inpath '/root/t_stu_subject' into table school.t_stu_subject;在hdp-4中查看数据是否插入:
select * from t_stu_subject;结果图如下:
使用explode()对数组字段“炸裂”
select explode(subjects) from school.t_stu_subject;结果图如下:
然后,我们利用这个explode的结果,来求去重的课程:
select distinct tmp.sub from (select explode(subjects) as sub from t_stu_subject) tmp;结果图如下:
版权声明:本文为Hi_this_is_ID原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。