Bu, Hive'daki İlk tablodur - Satın aldığımız öğe hakkında bilgi içerir.İki ilgili tabloyu sorgula (Katıl)
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
)
Ve bu yukarıdaki birinci tabloda
**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
Bu Ayrıca biz satın alan öğeler hakkında bilgi içerir Hive- İkinci tablodur içinde veridir.
CREATE EXTERNAL TABLE IF NOT EXISTS Table2
(
USER_ID BIGINT,
PURCHASED_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
Ve bu sadece bir BUYER_ID (USER_IDEND_LINK) anlamak için sorun basit hale getirmek için veri azaltmıştır yukarıdaki masanın
**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"}]
içinde veridir.
Sorun BEYANNAMESİ
ben de o zaman, PURCHASED_ITEM
eşleşti alır (her ikisi de aynı şey gibi) ben USER_ID
eğer Table1
den Table2
ve BUYER_ID
görmek gerekir demektir Table1
ile Table2
karşılaştırmak gerekir PRODUCT_ID Dizisi (TIMESTAMPS ile aynı) ve CREATE_TIME ile aynı olan ITEM_ID
ve ile aynı olan USER_ID (BUYER_ID) için bir tablo olan Table2 ve bazen de (PURCHASED_ITEM
veanlamına gelir), CREATED_TIME
) aynı veya bazı PRODUCT_ID ve TIMESTAMPS, Table2
'dan Table1
karşılaştırmasından sonra eksiktir. Bununla
o belirli BUYER_ID (USER_IDEND_LINK) ve içerik aynı olmalıdır için Tablo 1 'de ITEM_ID
ve CREATED_TIME
sayımı ile aynı olmalıdır Table2
içinde PRODUCT_ID
ve TIMESTAMPS
sayısını anlamına gelir. bunlar aynı değildir veya giriş Table2
gelen eksikse, o zaman sonuç yazdırmak gerekiyor, bu özel ITEM_ID
ve CREATED_TIME
Table2
eksik veya PRODUCT_ID
ve TIMESTAMPS
Table1
gelen karşılaştırdıktan sonra aynı değildir.
Yani şu anda ben bir satırda aynı USER_ID(BUYER_ID)
için Table1 5 PRODUCT_ID
ve 5 TIMESTAMPS
tam olarak aynı olmalıdır Table2 yüzden 5 ITEM_ID
ve 5 CREATED_TIME
sahip bu BUYER_ID 1015826235
için Tablo-1'de örneğin. Aynı değilse veya giriş eksikse, bunun eksik olduğunu veya bu verilerin yanlış olduğunu gösteren sonucu yazdırmam gerekiyor.
PURCHASED_ITEM
daha iyi okunabilecek hale getirmek için Table2
yılında Struct bir dizidir ve o iki şey PRODUCT_ID
ve TIMESTAMPS
içerir.
USER_ID
ve BUYER_ID
sonra eşleşti alır Table2
yılında PRODUCT_ID
Table1
yılında CREATED_TIME
ile sonlandırılması gerekir Table2
içinde Table1
ve TIMESTAMPS
yılında ITEM_ID
ile sonlandırılması gerekir.
GÜNCELLEME
HiveQL SQL Sorgu Soru: - Önce soru için yazdığı
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.
Sorgu. Sorgu doğru mu?
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.
Tüm bu kalın metinler biraz köreliyordu. – Ben