Hive常用的查询函数

一、空字段赋值

1、函数说明

NVL:给值为NULL的数据赋值,它的格式是NVL(value,default_value)。它的功能是如果value为NULL,则NVL函数返回的defalt_value。否则返回value的值。如果两个参数为NULL,则返回NULL。

2、案例实测

-- 查询:如果员工的comm为NULL,则用-1代替
select comm , nvl(comm,-1) from emp;
-- 如果员工的comm为NULL,则用领导ID代替
select comm , nvl(comm,mgr) from emp;

二、Case When

1、数据准备

name dept_id sex
悟空 A

大海

B
大熊 A
老四 A
阿梅

B

凤姐 B

 

 

 

 

 

 

 

2、需求

求出各部门男女各有多少人

select 
   dept_id,
   sum(case sex when '' then 1 else 0 end)  man_count,
   sum(case sex when '' then 1 else 0 end)  man_count
from 
    emp_sex
group by 
    dept_id;

三、行转列

1、函数说明

Concat(str1,str2,.....) 返回字符串链接后的结果,支持输入任意个字符串。

注意:输入参数为NULL的时候,返回NULL

Concat_ws(separator,str1,star2,....) :是一个特殊形式的Concat()函数,第一个参数是分隔符,后边是要进行拼接的字符串。

注意:输入参数为NULL不影响,连接符号为NULL,返回值为NULL。

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

 2、数据准备

name constellation blood_type
老四 白羊座 A
凡凡 射手座 B
雯雯 白羊座 B
小丽 白羊座 A
大伟 射手座 B
大山 射手座 A

 

 

3、需求

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

白羊座,A  老四|小丽

白羊座,B  雯雯

射手座,A  大山

射手座,B  凡凡|大伟

4、SQL

select 
  t1.base,
  concat_ws('|',collect_set(t1.name))name
from
  (select 
      name,
      concat(constellaction,',' ,boold_type)base
  from 
    person_info)t1;

四、列转行

1、函数说明

explode(col):将hive一列中复杂 的Array或者map拆分为多行。

lateral view

用法: lateral view  udtf(expression) tableAlias AS colunAlias;

五、窗口函数(开窗函数)

六、Rank

 

猜你喜欢

转载自www.cnblogs.com/mayucheng123/p/12768741.html