hive函数之条件运算

206 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第10天,点击查看活动详情

接上一篇继续来说一说hive的函数,本文这次讲述的也是一个重要的hive常用语法,条件运算。

条件运算

1、if 条件函数 作用:处理单条列上的查询结果并返回

常见使用方法:IF(boolean testCondition, T Truevalue, T FalsevalueOrNull) ,在这个表达式中的返回结果就是这个T。

具体实现方式:当条件表达式满足结果为 True 的时候,此时会返回 Truevalue;如果不满足结果为True,则返回 FalsevalueOrNull,这表示返回结果也可以是null或者某个值。

来具体看几个例子,表达式1=2是否成立,如果成立则返回100,如果不成立就返回200,可见返回结果肯定就是200。

或者是在写入某字段的值的时候,也可以用条件函数先做判断,如果满足status在301、302、303...这些值里面,就返回1,否则返回0。

select if(1 = 2, 100, 200);
>> 200 
​
设定一个字段的值也可以用到条件函数
if(status in (301,302,303,304,305,306),1,0) as is_project_building
​

2、case 条件判断函数 作用:判断符合条件的结果并返回

常见使用方法: CASE WHEN a=b THEN c [WHEN a= d THEN e]* [ELSE f] END ,这里的返回类型也是一个泛型,可以是字符串或者表达式结果。

具体实现方式:对上述表达式的过程解释就是,当a和b相等,那么就返回 c;如果是a和d相等,那么就返回 e;两者都没有满足,结果就是返回 f,然后就结束。when后面的就是判断条件,而then后面的就是返回结果,else就是以上条件都不满足的时候的默认返回结果。

下面来具体看两个例子,当1=2的时候,返回tom,当2=2的时候返回jack,两者都不满足,就返回mary。

select case when 1 = 2 then 'tom' when 2 = 2 then 'jack' else 'mary' end
>> jack
case  
when complain_level='-1' then '缺省'   
when complain_level='0' then '重大'   
when complain_level='1' then '一级'   
when complain_level='2' then '二级'   
when complain_level='3' then '三级'   
when complain_level='4' then '四级'   else complain_level end 

这两个函数在hive的sql设计中还是比较常用到的,尤其是case这个条件判断,一般对于某字段有很多枚举值的时候,就需要case来转换枚举值为具体的字段含义。