以下是两张表 -
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;
答案 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及其对应的计数值。 (嗯,这就是我理解你想要的。)