hive使用——hive中实现行列转置

1、hive中行转列:explode()2、hive中列转行:**collect_set()**列去重之后,转行collect_list():列不去重之后,转行对于这三个函数的用法,这里我会举一个例子来说明他们是如何使用的:首先,...

1、hive中行转列explode()
2、hive中列转行
**collect_set()**列去重之后,转行
collect_list():列不去重之后,转行
对于这三个函数的用法,这里我会举一个例子来说明他们是如何使用的:
首先,这里在hive建了一个分区表,表的结构和内容如下:

create table t_student(
name string,
course string)partitioned by (day date)
stored as orc
表的内容:
'张三' '英语' '2020-07-29'
'张三' '语文' '2020-07-29'
'张三' '英语' '2020-07-30'
'李四' '数学' '2020-07-30'
'李四' '英语' '2020-07-30'

collect_list()函数可以实现列转行,且不去重,具体用法如下:

select  name,collect_list(course) from t_student
group by name
输出:
'张三' ['英语','语文','英语']
'李四' ['数学','英语']

select  collect_list(course) from t_student

输出:
['英语','语文','英语','数学','英语']

collect_set()函数可以实现列转行,且去重,具体用法如下:

select  name,collect_set(course) from t_student
group by name
输出:
'张三' ['英语','语文']
'李四' ['数学','英语']

explode()函数可以实现行转列,具体用法如下:

select explode(course_1)
from(
select  collect_list(course) as course_1
from t_student
) t

输出:
'英语'
'语文'
'英语'
'数学'
'英语'


相关内容推荐:

关于hive的介绍和使用

  • 发表于 2020-07-31 16:38
  • 阅读 ( 16 )

0 条评论

请先 登录 后评论
月木易
月木易

436 篇文章

作家榜 »

  1. 月木易 436 文章
  2. 58沈剑 300 文章
  3. 奈学教育 85 文章
  4. 江帅帅 | 奈学教育 20 文章
  5. 李希沅 | 奈学教育 9 文章
  6. 林淮川 | 奈学教育 7 文章
  7. nxadmin 2 文章
  8. 科技热点 1 文章