Hive外连接:如何更改默认的NULL值

时间:2014-07-08 16:36:12

标签: join hadoop hive

对于hive外部联接,如果一个表中不存在加入密钥,hive将放置NULL。可以使用另一个值吗?例如:

表1:

user_id, name, age
1        Bob   23
2        Jim   43

表2:

user_id,   txn_amt,      date
 1          20.00      2013-12-10
 1          10.00      2014-07-01

如果我在LEFT OUTER JOIN上执行了user_id

INSERT INTO TABLE user_txn
SELECT 
     Table1.user_id,
     Table1.name,
     Table2.txn_amt,
     Table2.date
FROM
    Table2
LEFT OUTER JOIN
Table1
ON
Table1.user_id = Table2.user_id;

我希望输出如下:

user_id,    name,   tnx_amt,   date
1           Bob     20.00      2013-12-10
1           Bob     10.00      2014-07-01
2           Jim     0.00       2099-12-31

请注意Jim的txn_amtdate列。在hive中有没有办法定义这样的默认值?

1 个答案:

答案 0 :(得分:11)

您可以使用COALESCE代替Table2.txn_amt

COALESCE(Table2.txn_amt, 0.0)

这样做会返回非空的第一个值。因此,如果txn_amt为null,它将转到列表中的第二个值。 0.0永远不会为空,所以它会选择它。如果txn_amt中包含值,则会返回该值。