1. 引言
对于复杂的数据,存在复杂的数据类型,面对复杂的需求,可以考虑使用行转列,或者列转行的操作
1.1 行转列说明
CONCAT(string A/col, string B/col…)
:返回输入字符串连接后的结果,支持任意个输入字符串;
CONCAT_WS(separator, str1, str2,...)
:它是一个特殊形式的 CONCAT()。第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间;
COLLECT_SET(col)
:函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。
当字段存在多个数据组合或者经过变化形成类似的样子,可以考虑行转列(一个列存在了太多了信息)
突破group by 限制,将重复的列元素,转成一行显示。
1.2 列转行说明
explode(col):将Hive一列中复杂的array或者map结构拆分成多行。
lateral view
用法:lateral view udtf(expression) tableAlias AS columnAlias
如:lateral view explode(col) table_temp as col_name