Hive_处理NULL的几个函数 NVL, COALESCE, NULLIF

官方文档:

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

参考文档:

https://blog.csdn.net/qq_34105362/article/details/80402806

 

       Hive提供了很多的函数,可以在命令行下show functions罗列所有的函数,你会发现这些函数名与mysql的很相近,绝大多数相同的,可通过describe function functionName 查看函数使用方法。

 

 

Hive 常用的空值处理函数有 NVL (0.11 + ), COALESCE , NULLIF (2.3.0 +).

空值处理函数的主要作用 : 

NVL (0.11), COALESCE  针对于空值数据进行补齐

nullif( a, b ) 主要是完成判断 a 与 b 是否相同 , 相同返回 null ,否则返回 a

 

下面我们看一下这几个函数的介绍,我们按照常用程度进行介绍

 

1.COALESCE

T

COALESCE(T v1, T v2, ...)

Returns the first v that is not NULL, or NULL if all v's are NULL.

hive> describe function coalesce;
OK
coalesce(a1, a2, ...) - Returns the first non-null argument
Time taken: 0.028 seconds, Fetched: 1 row(s)

Coalese函数的作用是的NVL的函数有点相似,其优势是有更多的选项。
格式如下:
Coalesce(expr1, expr2, expr3….. exprn)
表示可以指定多个表达式的占位符。所有表达式必须是相同类型,或者可以隐性转换为相同的类型。

 

实际工作中,我一般使用这个方法,给NULL的数据一个默认值。

 

 

2.NVL

Tnvl(T value, T default_value)Returns default value if value is null else returns value (as of HIve 0.11).
hive> describe function nvl;
OK
nvl(value,default_value) - Returns default value if value is null else returns value
Time taken: 0.019 seconds, Fetched: 1 row(s)

NVL(expr1, expr2):
1、空值转换函数;
2、类似于mysql-nullif(expr1, expr2),sqlserver-ifnull(expr1, expr2)。

备注:
1、如果expr1为NULL,返回值为 expr2,否则返回expr1。
2、适用于数字型、字符型和日期型,但是 expr1和expr2的数据类型必须为同类型。
 

3.NULLIF 

Tnullif( a, b )

Returns NULL if a=b; otherwise returns a (as of Hive 2.3.0).

Shorthand for: CASE WHEN a = b then NULL else a

 由于我用的是 Hive 较低的版本暂时不支持这个函数,故不作Hive 控制台的演示。

NULLIF(exp1,expr2)函数的作用是如果exp1和exp2相等则返回空(NULL),否则返回第一个值。

 

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值