赞
踩
官方文档:
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
下面我们看一下这几个函数的介绍,我们按照常用程度进行介绍
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的数据一个默认值。
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的数据类型必须为同类型。
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),否则返回第一个值。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。