這是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
)
而且這是在上述的第一臺
**ITEM_ID** **CREATED_TIME** **BUYER_ID**
220003038067 2012-06-21 1015826235
300003861266 2012-06-21 1015826235
140002997245 2012-06-14 1015826235
200002448035 2012-06-08 1015826235
260003553381 2012-06-07 1015826235
這是第二個表中Hive-,其中還包括我們所購買的物品信息的數據。
CREATE EXTERNAL TABLE IF NOT EXISTS Table2
(
USER_ID BIGINT,
PURCHASED_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
而且這是在上面的表 -
**USER_ID** **PURCHASED_ITEM**
1015826235 [{"product_id":220003038067,"timestamps":"1340321132000"}, {"product_id":300003861266,"timestamps":"1340271857000"}, {"product_id":140002997245,"timestamps":"1339694926000"}, {"product_id":200002448035,"timestamps":"1339172659000"}, {"product_id":260003553381,"timestamps":"1339072514000"}]
數據我已經將數據減少到只有一個BUYER_ID(USER_ID),以使問題易於理解。
問題聲明 -
我需要比較Table2
與Table1
,這意味着我要看看是否USER_ID
從Table1
Table2
和BUYER_ID
(因爲他們都是同樣的事情)在被匹配,則PURCHASED_ITEM
Table2是一個PRODUCT_ID(與ITEM_ID相同)和TIMESTAMPS(與CREATED_TIME相同)的數組,應該與ITEM_ID
和CREATED_TIME
中的Table1
相同,並且有時也有可能它們(意思是PURCHASED_ITEM
和ITEM_ID
,CREATED_TIME
)與Table1
相比較後,Table2
中的一些PRODUCT_ID和TIMESTAMPS不同。
我的意思是在Table2
PRODUCT_ID
和TIMESTAMPS
計數應該是相同的表1和ITEM_ID
計數CREATED_TIME
針對特定BUYER_ID(USER_ID)和內容應該是一樣的。如果它們不是相同的或者從Table2
中缺少條目,那麼我需要打印結果,這個特定的ITEM_ID
和CREATED_TIME
從Table2
丟失,或者PRODUCT_ID
和TIMESTAMPS
與Table1
相比較後不同。
因此,例如,在表1當前爲此BUYER_ID 1015826235
我有5 ITEM_ID
和5 CREATED_TIME
,所以在表2我應該在一排有5 PRODUCT_ID
和5 TIMESTAMPS
完全相同的表1的相同USER_ID(BUYER_ID)
。如果它不相同或缺少輸入,那麼我需要打印顯示缺少結果或該數據錯誤的結果。
所以只是爲了讓更多的clear-
PURCHASED_ITEM
是結構的Table2
一個數組,它包含兩件事情PRODUCT_ID
和TIMESTAMPS
。
如果USER_ID
和BUYER_ID
得到匹配,然後在Table2
PRODUCT_ID
應ITEM_ID
在Table1
和TIMESTAMPS
在Table2
匹配應CREATED_TIME
在Table1
匹配。
修訂
HiveQL SQL查詢問題: -
Q 1) Find all USER_ID from Table2 whose PRODUCT_ID or TIMESTAMP are not same with
ITEM_ID or CREATED_TIME after comparing with Table1 on BUYER_ID.
查詢,我寫了第一個問題。查詢是否正確?
A 1) select Table2.user_id from Table2 where Table1.user_id = Table2.buyer_id
and (Table1.item_id <> Table2.product_id or UNIX_TIMESTAMP(Table1.created_time) <>
Table2.timestamps)
Q 2) Find the `BUYER_ID(USER_ID)` and as well as those `ITEM_ID` and `CREATED_TIME`
which are missing from `Table2` after comparing from `Table1` on `BUYER_ID`.
A 2) Not sure.
所有粗體文本都有點盲目。 – Ben