hive的条件函数

152 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第13天,点击查看活动详情

hive开发过程中最常用到的就是条件函数了吧,像if、case、nvl等都是属于条件函数,本文就概括性的将条件函数一一罗列一下,以便大家翻找起来也会比较方便。

首先是介绍if()函数

常见使用方法: if(boolean testCondition, T TrueValue, T FalseValueOrNull)

具体功能描述: 这个和在java语言中的if判断类似,就是给出一个表达式,判断这个表达式的结果是true还是false,如果是true的话就返回TrueValue,如果表达式是false的话,就返回FalseValueOrNull。当然如果返回的是null,可以再加上判空的函数指定非空的默认值。

select  if(a=a,1,0)  as test_cl  -- 这个就是最简单的一种表达式方法,如果a等于a是true,那么就返回1,如a等于a是false,那么就返回0
​
>> 1
​
select if(1+2=5,'nnn','mmm')   -- 当然返回的结果类型是没有限制的,可以是任意的类型和参数。这里的返回参数是泛型。
>> mmm

其次使用率也较高的就是case when的条件函数,日常我们一般都是使用到case when a then b

When c then d else f end 这样的写法,这也是醉常见普通的写法。

其含义就是当a为true的时候返回b,这里的a可以是表达式或者某一个嵌套的条件函数都可以,同理当c为true的时候,就返回d,如果同时满足了a和c的表达式,则会返回最末次判断获得的结果来输出,最终都没有满足为true的表达式,则返回默认值f然后结束。

另外还有一种不常见但也很好用的case函数的写法,case a when b then c when d then e else f end。这个和上面不同的地方就是会将一个表达式多次比较判断,这里就是拿a多次比较,如果等于b,就返回c,如果等于d,就返回e,都不等于的话就返回默认f。这个逻辑适用于简单的一对一判断。