1、先学习cancat ()函数吧。
cancat ()函数:用于连接两个或多个数组
案例:
源数据:
user order _ type order _ numberzhangsancollect 20 wangwu payment3zahngsanpayment5wangwu collect 15目标:
使用user order _ grosszhangsancollect (20 )、payment (5) wangwu collect (15 )、payment (3) concat ) )函数访问order_type和oor
首先,concat(order_type,',order_number,') '是两个字段的连接,连接结果如下:
userorderzhangsancollect(20 ) wangwupayment(3)3) zahngsanpayment(5)5) wangwu collect (15 )以及concat_ws )和congwu
select user,concat_ws (,collect_set ) concat ) ((,order_number,') ) orderfromttrom ) )。
其中,order别名的第一个逗号由逗号分隔!
collect_set角色:
(1)减肥,体重落在group by后面的用户身上
)2) group by以后属于同一user的形成一个集合,与concat_ws组合使用,分割形成字符串
=================================列转=======
对HIVE行进行排序的操作:
在hive中如何进行行转列? 使用: concat_ws(‘ (((“拆分时使用的字符”collect_set ) ) ) ) ) ) ) ) 652
test.txta b 1a b 2a b 3c d 4c d 5c d 6如何将上图转换为:
a1、2、3cd4、5、6句:
select col1、col2、concat_ws (、)、collect _ set (col3) ) from tablename group by col1、col2;
上述是一个行转列! 使用了名为concat_ws (的函数!
其中collect_set的作用:只接受基本数据类型,主要作用是重新聚合字段的值以生成阵列类型字段。
怎么把上面的东西复原呢? 它用于lateral viewexplode () HIVE中的列跳槽函数。
语句:
select col1、col2、col5fromtablenamelateralviewexplode (split (col 3,',') ) b as col5;
其中b是虚拟表的名称,此字段是必填字段!
其中,explode的作用是列转换。 此函数接收array类型的参数,其作用正好与collect_set相反,用于将array类型的数据行转换为列。
以上是concat concat_ws collect_set的有用性。