hive行转列

数据准备 ,表:person_info

6-6 数据准备

name

constellation

blood_type

孙悟空

白羊座

A

大海

射手座

A

宋宋

白羊座

B

猪八戒

白羊座

A

凤姐

射手座

A

需求

把星座和血型一样的人归类到一起。结果如下:

射手座,A            大海|凤姐

白羊座,A            孙悟空|猪八戒

白羊座,B            宋宋

1、sql:select name,concat(constellation,',',blood_type) as constellation_blood_type from person_info;

2、sql:

  select

      t1.base,

      concat_ws('|', collect_set(t1.name)) name

  from

      (select

          name,

          concat(constellation, ",", blood_type) base

      from

          person_info) t1

  group by

      t1.base;

 

1.相关函数说明

CONCAT(string A/col, string B/col):返回输入字符串连接后的结果,支持任意个输入字符串;

CONCAT_WS(separator, str1, str2,...):它是一个特殊形式的 CONCAT()。第一个参数剩余参数间的分隔符。分隔符可以是与剩余参数一样的字符串。如果分隔符是 NULL,返回值也将为 NULL。这个函数会跳过分隔符参数后的任何 NULL 和空字符串。分隔符将被加到被连接的字符串之间;

COLLECT_SET(col):函数只接受基本数据类型,它的主要作用是将某字段的值进行去重汇总,产生array类型字段。(数据去重)

posted @ 2020-12-06 17:10  一叶知秋。  阅读(115)  评论(0编辑  收藏  举报