SQL Hive-将空值替换为0Hadoop Hive

问题描述

进行左联接后,我剩下许多空(空)值。在同一个查询的某些列中,如何将这些空值替换为0?

select 
    m1.*,t2.Apple,t3.Berry,t4.Cherry
from
    table1 as t1
    left join table2 as t2 on t1.id = t2.id
    left join table3 as t3 on t1.id = t3.id
    left join table3 as t4 on t1.id = t4.id
;

示例输出

ID  Apple     Berry    Cheery
1   1         NULL     1
2   1         NULL     NULL
3   NULL      1        NULL
4   NULL      NULL     NULL

解决方法

您可以使用coalesce()null的值替换为0

select 
    t1.*,coalesce(t2.Apple,0) as apple,coalesce(t3.Berry,0) as berry,coalesce(t4.Cherry,0) as cherry
from
    table1 as t1
    left join table2 as t2 on t1.id = t2.id
    left join table3 as t3 on t1.id = t3.id
    left join table4 as t4 on t1.id = t4.id
;

请注意,这假设所有3个水果列都是数字数据类型。

侧面说明:我在原始查询中修复了表别名的一些错字。