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

T nvl(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 

T nullif( 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),否则返回第一个值。

 

你可能感兴趣的:(Hive)