Hive中列转行函数collect_set详解

原创 2017年10月11日 23:39:30
Hive中列转行函数collect_set详解

--1.创建测试表
create table test1011
(
   c1  string,
   c2  string,
   c3  string
)
row format delimited fields terminated by ' '
stored as textfile;

--2.添加测试文件和数据
test20171011.txt
a b 1
a b 2
a b 3
c d 4
c d 5
c d 6

--3.加载数据
--使用场景: 通过hue文件上传
load data inpath '/user/pabrdm/test20171011.txt' into table pabrdm.test1011;  
--使用场景: linux后台执行         
--load data local inpath '/user/pabrdm/test20171011.txt' into table pabrdm.test1011;  
有local表示从本地文件系统加载(文件会被拷贝到hdfs中)
无local表示从hdfs中加载数据(注意:文件直接被移动,而不是拷贝)
overwrite 表示是否覆盖表中数据(或指定分区的数据)(没有overwrite 会直接append,而不会滤重)

--4.查询
select * from test1011;
select c1,c2,collect_set(c3) as c3
  from test1011
 group by c1,c2;
 
结果如下:
c1 c2 c3
a b ["1","2","3"]
c d ["4","5","6"]

--5.补充字符串连接函数:concat_ws  带分隔符
它是一个特殊形式的concat(),第一个参数为分隔符。
这个函数会跳过分隔符参数后的任何null和空字符串。
分隔符将被加到被连接的字符串之间,如果分隔符是null,返回值也将为null。

select c1,c2,concat_ws(',',collect_set(c3)) as c3
from test1011
group by c1,c2;
c1 c2 c3
a b 1,2,3
c d 4,5,6

版权声明:本文为博主原创文章,未经博主允许不得转载。

hive-列转行和行转列

1. 假设我们在hive中有两张表,其中一张表是存用户
  • JThink_
  • JThink_
  • 2014年08月26日 21:27
  • 40012

hive 行专列 列转行

1. 假设我们在hive中有两张表,其中一张表是存用户基本信息,另一张表是存用户的地址信息等,表数据假设如下: user_basic_info: id name ...
  • u010670689
  • u010670689
  • 2015年03月26日 23:49
  • 1091

HIVE中关于collect_set与explode函数妙用

hive的复合数据类型hive中的列支持使用三类复杂的集合数据类型,即:array,map及struct,这些类型的名称是保留字,具体用法可参见该篇博文,里面有关于三类基本集合数据类型的操作实例,注:...
  • sinat_29508201
  • sinat_29508201
  • 2015年08月31日 19:30
  • 10935

hive列转行--行转列问题

列转行--行转列问题   问题:使用case when实现行转列      解决:  www.2cto.com            1、测试准备:           ...
  • gdp5211314
  • gdp5211314
  • 2013年04月12日 13:47
  • 2958

hive行专列,列转行

1. 假设我们在hive中有两张表,其中一张表是存用户基本信息,另一张表是存用户的地址信息等,表数据假设如下: user_basic_info: id name 1 ...
  • u010670689
  • u010670689
  • 2016年11月10日 11:55
  • 429

oracle 自定义列转行函数

-- 定义一个对象类型. CREATE OR REPLACE TYPE ty_row_str_split as object (strValue VARCHAR2 (4000)); -- 定义一个 表...
  • YJHAndYW
  • YJHAndYW
  • 2016年08月15日 13:05
  • 829

Hive常见内置函数及其使用

函数分类HIVE CLI命令显示当前会话有多少函数可用 SHOW FUNCTIONS;显示函数的描述信息 DESC FUNCTION concat;显示函数的扩展描述信息 DESC FUNCTI...
  • scgaliguodong123_
  • scgaliguodong123_
  • 2015年07月21日 21:34
  • 2805

Oracle 11g 新聚集函数listagg实现列转行

这是一个Oracle的列转行函数:LISTAGG()   示例代码: with temp as( select 'China' nation ,'Guangzhou' city from d...
  • lichangzai
  • lichangzai
  • 2014年02月27日 16:22
  • 4791

Oracle列转行函数 Listagg() 语法详解及应用实例

工作中用到一段比较复杂的SQL查询脚本,使用了listagg()函数实现了具有多个值的列字段的填充(即,列表聚合,list aggregation(我猜的))。 说简单点,listagg()函数可以实...
  • hpdlzu80100
  • hpdlzu80100
  • 2017年01月03日 22:16
  • 5730

DECODE函数实现列转行

在实际的开发当中有时候会有让你做统计、做报表。 比如在学生选课管理系统中让你写出所有的学生的每一门可的成绩,这时候我们写的SQL得出的结果一般是每一个学生选了好多课,其中每一个课和对应的成绩都是一行...
  • ch7543658
  • ch7543658
  • 2014年11月15日 16:24
  • 4436
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Hive中列转行函数collect_set详解
举报原因:
原因补充:

(最多只允许输入30个字)