Hive 行转列 列转行

行转列是指多行数据转换为一个列的字段。

列转行是值某一个字段转换成多行显示。

行转列

Hive行转列用到的函数: concat(str1,str2,...) --字段或字符串拼接 concat_ws(sep, str1,str2) --以分隔符拼接每个字符串 collect_set(col) --将某字段的值进行去重汇总,产生array类型字段

a       b       1
a       b       2
a       b       3
c       d       4
c       d       5
c       d       6

变为:
a       b       1,2,3
c       d       4,5,6
select col1,col2,concat_ws(',',collect_set(col3))
from tmp_bsf_test
group by col1,col2;

列转行 EXPLODE(col):将hive一列中复杂的array或者map结构拆分成多行。 LATERAL VIEW 用法:LATERAL VIEW udtf(expression) tableAlias AS columnAlias 解释:用于和split, explode等UDTF一起使用,它能够将一列数据拆成多行数据,在此基础上可以对拆分后的数据进行聚合。

a       b       1,2,3
c       d       4,5,6

变为:
a       b       1
a       b       2
a       b       3
c       d       4
c       d       5
c       d       6
select col1, col2, col5
from tmp_bsf_test a
lateral  view explode(split(col3,','))  b AS col5
-- explode就是将hive一行中复杂的array或者map结构拆分成多行。

results matching ""

    No results matching ""