Hive之行转列/列转行
1、行转列
场景:在hive表中,一个用户会有多个人群标签,List格式(逗号分隔如要转成List),有时我们需要统计一个人群标签下有少用户,这是就需要使用行转列了
例如,user_crowd_info有如下数据
visit_id crowds abc [100,101,102] def [100,101] abe [101,105]
可以使用的函数
select explode(crowds) as crowd from user_crowd_info; 结果: 100 101 102 100 101 101 105
这样执行的结果只有crowd, 但是我们需要完整的信息,使用select visit_id, explode(crowds) as crowd from user_crowd_info;
是不对的,会报错UDTF's are not supported outside the SELECT clause, nor nested in expressions
所以我们需要这样做:
select visit_id,crowd from user_crowd_info t lateral view explode(t.crowds) adtable as crowd;
2、列转行
使用concat_ws函数即可
select visit_id,concat_ws(,crowd) from user_crowd_info group by visit_id;

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Hive之parse_url函数详解
Hive的parse_url函数使用 parse_url(url, partToExtract[, key]) - extracts a part from a URL 解析URL字符串 partToExtract的选项包含[HOST,PATH,QUERY,REF,PROTOCOL,FILE,AUTHORITY,USERINFO] 举例 : select parse_url('http://hujiang.com/category/12258437290?query=test', 'PROTOCOL') from dual; --http select parse_url('http://hujiang.com/category/12258437290?query=test', 'HOST') from dual; ---hujiang.com select parse_url('http://hujiang.com/category/12258437290?query=test', 'REF') from dual; ---空 select parse_url('http://h...
- 下一篇
Hive查询指定分隔符
业务场景: 做数据分析的时候,经常会用到hive -e "sql" > result.csv,然后将结果导入到excel中,可是使用hive -e导出后默认的分隔符是\t,excel无法识别,所以需要将\t转成, 方案一:使用linux管道符替换 hive -e "select * from table_name limit 100" | sed 's/\t/,/g' > result.csv 或者 hive -e "select * from table_name limit 100" | tr "\t" "," > result.csv 方案二:使用hive的insert语法导出文件 insert overwrite local directory '/home/hadoop/20180303' row format delimited fields terminated by ',' select * from table_name limit 100
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- MySQL8.0.19开启GTID主从同步CentOS8