使用HiveQL加入两个表

时间:2012-07-04 00:51:46

标签: sql hive

以下是两张表 -

CREATE EXTERNAL TABLE IF NOT EXISTS Table1   (This is the MAIN table through which     comparisons need to be made) 
( 
ITEM_ID BIGINT, 
CREATED_TIME STRING, 
BUYER_ID BIGINT 
) 

CREATE EXTERNAL TABLE IF NOT EXISTS Table2 
( 
USER_ID BIGINT, 
PURCHASED_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>> 
) 

作为BUYER_ID和USER_ID,它们都是一样的。

我需要通过比较Table1来找到表2中不存在的总COUNT和所有那些BUYER_ID。所以我认为这是一种左外连接查询。我是HiveSql的新手,所以我有问题要弄清楚在HiveQL中应该用什么实际语法。我写了下面的SQL Query。谁能告诉我下面的SQL查询是否正常以实现我的方案?

SELECT COUNT(BUYER_ID), BUYER_ID 
FROM Table1 dw 
LEFT OUTER JOIN Table2 dps ON (dw.BUYER_ID = dps.USER_ID) 
GROUP BY BUYER_ID;

1 个答案:

答案 0 :(得分:1)

如果我理解你的要求,我认为你几乎就在那里。看来你只需要添加一个条件来检查两个表之间是否匹配:

SELECT COUNT(BUYER_ID), BUYER_ID 
FROM Table1 dw 
LEFT OUTER JOIN Table2 dps ON (dw.BUYER_ID = dps.USER_ID) 
WHERE dps.USER_ID IS NULL
GROUP BY BUYER_ID;

以上将过滤掉表2中具有匹配项的BUYER_ID,并显示剩余的BUYER_ID及其对应的计数值。 (嗯,这就是我理解你想要的。)