1

这是下面的两个表格-

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 的比较来找到 Table2 中不存在的总 COUNT 和所有那些 BUYER_ID。所以我认为这是一种左外连接查询。我是 HiveSql 的新手,所以我很难弄清楚在 HiveQL 中执行此操作的实际语法应该是什么。我写了下面的 SQL 查询。谁能告诉我下面的 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;
4

1 回答 1

2

如果我正确理解您的要求,我想您就快到了。如果两个表之间不匹配,您似乎只需要添加一个条件检查:

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 及其对应的计数值。(嗯,这就是我理解你想要的。)

于 2012-07-04T15:57:40.360 回答