1

これらは以下の2つの表です-

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は、どちらも同じものです。

表1と比較して、合計COUNTと表2にないすべての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

私があなたの要件を正しく理解していれば、あなたはもうすぐそこにいると思います。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 に答える