在hive里面,其实我们主要是做一些sql相关的操作,因此对于普通的crud操作之外,还会涉及到其他的函数,这篇文章我们介绍下hive内置函数之行转列的函数。
hive中行转列函数主要有4个,分别是:
CONCAT(string A/col, string B/col…) CONCAT_WS(separator, str1, str2,...) COLLECT_SET(col) COLLECT_LIST(col)
下面我们分别介绍下这4个函数.
1)concat函数
这个concat函数的主要含义是:返回输入字符串连接后的结果,支持任意个输入字符串,下面我们演示下:
select concat(id,"-",username) from school_user;
2)concat_ws函数
这个函数的第一个参为参数间的间隔符,如果分隔符是null,那么返回值也将是null,这个函数会跳过分隔符参数后的任何null和空字符串,分隔符将被加到被连接的字符串之间,下面我们演示下:
#首先插入一端带分隔符的字符串 insert into school_user values(7,"赵六,田七,王八"); #查询看下结果 select * from school_user where id = 7;
然后我们使用concat_ws函数查询试试
select id,concat_ws(",",username) from school_user where id = 7;
备注:
1、这个函数主要作用于string或者array。
2、日常这个函数使用频率看需求,一般不高。
3)collect_set函数
这个函数的主要意思是将某个字段进行去重汇总,最后产生一个array类型的字段,例如:
首先我们向school_user造一点数据,查询结果如下:
select * from school_user;
然后我们使用collect_set函数看看:
select collect_set(username) from school_user;
最后的执行结果是:
4)collect_list函数
这个函数的和上面的collect_set函数是相反的意思,他的意思是:函数只接受基本数据类型,他的主要作用是将某个值进行不去重汇总,产生array类型字段。下面我们来试试:
select collect_list(username) from school_user;
查询结果如下:
以上就是hive中行转列相关的内置函数。
还没有评论,来说两句吧...