1、行转列
场景:在hive表中,一个用户会有多个人群标签,List格式(逗号分隔如要转成List),有时我们需要统计一个人群标签下有少用户,这是就需要使用行转列了
例如,user_crowd_info有如下数据
1 | visit_id crowds |
可以使用的函数
1 | select explode(crowds) as crowd from user_crowd_info; |
这样执行的结果只有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
所以我们需要这样做:
1 | select visit_id,crowd |
2、列转行
使用concat_ws函数即可
1 | select visit_id,concat_ws(,crowd) from user_crowd_info group by visit_id; |