对于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_amt
和date
列。在hive
中有没有办法定义这样的默认值?
答案 0 :(得分:11)
您可以使用COALESCE
代替Table2.txn_amt
COALESCE(Table2.txn_amt, 0.0)
这样做会返回非空的第一个值。因此,如果txn_amt
为null,它将转到列表中的第二个值。 0.0
永远不会为空,所以它会选择它。如果txn_amt
中包含值,则会返回该值。