Đây là bảng đầu tiên trong Hive- Nó chứa thông tin về mặt hàng chúng tôi đang mua.Truy vấn hai bảng liên quan (Tham gia)
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
)
Và đây là các dữ liệu trong bảng đầu tiên trên
**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
Đây là bảng thứ hai trong Hive- Nó cũng chứa thông tin về các mặt hàng chúng tôi đang mua.
CREATE EXTERNAL TABLE IF NOT EXISTS Table2
(
USER_ID BIGINT,
PURCHASED_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
Và đây là các dữ liệu trong Bảng- trê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"}]
Tôi đã giảm dữ liệu đến chỉ có một BUYER_ID (USER_ID) để làm cho vấn đề đơn giản để hiểu.
Vấn đề Câu lệnh
Tôi cần phải so sánh với Table2
Table1
, có nghĩa là tôi cần phải xem nếu USER_ID
từ Table2
và BUYER_ID
từ Table1
(như họ cả hai đều là điều tương tự) được xuất hiện, sau đó PURCHASED_ITEM
trong Bảng 2 là một mảng của PRODUCT_ID (giống như ITEM_ID) và TIMESTAMPS (giống như CREATED_TIME) phải giống như ITEM_ID
và CREATED_TIME
trong Table1
cho USER_ID cụ thể đó (BUYER_ID) và đôi khi có thể chúng (có nghĩa là PURCHASED_ITEM
và), CREATED_TIME
) không giống nhau hoặc thiếu một số PRODUCT_ID và TIMESTAMPS từ Table2
sau khi so sánh từ Table1
.
Bằng cách này, tôi có nghĩa là đếm PRODUCT_ID
và TIMESTAMPS
trong Table2
nên giống như đếm ITEM_ID
và CREATED_TIME
trong Table1 cho rằng BUYER_ID cụ thể (USER_ID) và nội dung cần được như vậy. Nếu chúng không thiếu hoặc thiếu mục nhập từ Table2
, thì tôi cần in kết quả, thiếu ITEM_ID
và CREATED_TIME
cụ thể này từ Table2
hoặc PRODUCT_ID
và TIMESTAMPS
không giống nhau sau khi so sánh từ Table1
.
Vì vậy, ví dụ như trong Table1 hiện cho BUYER_ID 1015826235
này tôi có 5 ITEM_ID
và 5 CREATED_TIME
, vì vậy trong Table2 tôi nên có 5 PRODUCT_ID
và 5 TIMESTAMPS
chính xác giống như Table1 cho cùng USER_ID(BUYER_ID)
trong một hàng. Nếu nó không phải là cùng hoặc mục nhập là mất tích sau đó tôi cần phải in kết quả cho thấy điều này là mất tích hoặc dữ liệu này là sai.
Vì vậy, chỉ để làm cho nó clear- hơn
PURCHASED_ITEM
là một mảng của Struct trong Table2
và nó chứa hai điều PRODUCT_ID
và TIMESTAMPS
.
Nếu USER_ID
và BUYER_ID
được xuất hiện sau đó PRODUCT_ID
trong Table2
nên được xuất hiện với ITEM_ID
trong Table1
và TIMESTAMPS
trong Table2
nên được xuất hiện với CREATED_TIME
trong Table1
.
CẬP NHẬT
Câu hỏi HiveQL SQL Query: -
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.
Query mà tôi đã viết cho câu hỏi đầu tiên. Truy vấn có đúng không?
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ất cả văn bản in đậm đó đều hơi bị mờ. – Ben