本文目录
一、行转列
1.1、行转列需要用到的函数
-
CONCAT(string A/col, string B/col…):返回输入字符串连接后的结果,支持任意个输入字符串。
例如: concat( aa, ‘:’, bb) 就相当于把aa列和bb列用冒号连接起来了,aa:bb。
-
CONCAT_WS(separator, str1, str2,…):CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
-
COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。
1.2、真题实战
1.2.1、需求
user_name | province | city |
---|---|---|
张三 | 广东 | 广州 |
李四 | 河南 | 开封 |
王二 | 广东 | 深圳 |
小亮 | 河南 | 开封 |
小明 | 广东 | 深圳 |
如上面表格是hive表user_info里的数据,现在想把省份和城市一样的用户放到一起,想要的结果如下:
place | users |
---|---|
广东,广州 | 张三 |
广东,深圳 | 王二|小明 |
河南,开封 | 李四|小亮 |