Hive中处理空值的函数及示例
在Hive中,处理NULL值的函数非常有用,下面介绍几个常用的函数及其示例:
1. NVL函数
功能:用指定的值替换NULL值。
语法:NVL(value, default_value)
示例:
SELECT name, NVL(salary, 0) AS salary
FROM employees;
如果salary为NULL,则显示为0。
2. COALESCE函数
功能:返回参数列表中的第一个非NULL值。
语法:COALESCE(value1, value2, ..., valueN)
示例:
SELECT name, COALESCE(salary, bonus, 0) AS compensation
FROM employees;
如果salary为NULL,则检查bonus;如果bonus也为NULL,则返回0。
3. NULLIF函数
功能:如果两个表达式相等则返回NULL,否则返回第一个表达式。
语法:NULLIF(expr1, expr2)
示例:
SELECT name, NULLIF(salary, 0) AS salary
FROM employees;
如果salary等于0,则返回NULL,否则返回salary值。
4. IS NULL / IS NOT NULL
功能:检查值是否为NULL。
示例:
-- 查找salary为NULL的记录
SELECT name FROM employees WHERE salary IS NULL;
-- 查找salary不为NULL的记录
SELECT name FROM employees WHERE salary IS NOT NULL;
5. CASE WHEN处理NULL
功能:使用条件表达式处理NULL值。
示例:
SELECT name,
CASE WHEN salary IS NULL THEN 0
ELSE salary
END AS salary
FROM employees;
6. IF函数
功能:条件判断函数,可用来处理NULL。
语法:IF(boolean_test, value_if_true, value_if_false)
示例:
SELECT name, IF(salary IS NULL, 0, salary) AS salary
FROM employees;
7. COALESCE与复杂类型结合
示例:
-- 处理复杂数据类型中的NULL
SELECT
COALESCE(map_column['key'], 'default') AS mapped_value,
COALESCE(array_column[0], 0) AS first_element
FROM complex_table;
8. 聚合函数中的NULL处理
大多数Hive聚合函数会自动忽略NULL值:
-- 计算平均工资,自动忽略NULL值
SELECT AVG(salary) FROM employees;
-- 使用COUNT计算非NULL值数量
SELECT COUNT(salary) FROM employees;
这些函数可以单独使用,也可以组合使用,根据实际业务需求灵活处理数据中的NULL值。
7022

被折叠的 条评论
为什么被折叠?



