当前位置:   article > 正文

Hive中多行合并成一行以及一行扩展成多行的方法_hive多行数据合并成一行

hive多行数据合并成一行

1. 多行合并成一行:使用函数collect_list
假如现在数据表table1如下所示:
col1   col2    col3
A        B         1
A        B         2
A        C         3
A        C         4
我们想将col1和col2值相同的col3合并成一行,得到如下的数据表,使用函数collect_list
Col1    col2    col3
A       B       1,2
A       C       3,4

select col1,col2,concat_ws(“,” , collect_list(cast(col3 as string))) from table1 group by col1, col2


我们将col3转换为string,是因为concat_ws函数只接受string或者array<string>的数据类型

还有一个collect_set,跟collect_list的区别是,前者会去重后再合并在一起。后者不会。

2. 一行扩展成多行
2.1 现有表table2如下:
Col1    col2    col3
A       B       [1,2]
A       C       [3,4]
我们想要
Col1   col2    col3
A      B       1
A      B       2
A      C       3
A      C       4
也就是把col3展开
使用函数explode。由于explode中不能select其他列,比如

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/429967
推荐阅读
相关标签
  

闽ICP备14008679号