To jest pierwsza tabela w Ulu - Zawiera informacje o przedmiocie, który kupujemy.Zapytanie o dwie powiązane tabele (Joins)
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
)
A to dane zawarte w powyższej tabeli pierwszej
**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
Jest to druga tabela w Hive- zawiera również informacje o rzeczach zakupu.
CREATE EXTERNAL TABLE IF NOT EXISTS Table2
(
USER_ID BIGINT,
PURCHASED_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
A to dane zawarte w powyższej Tabeli-
**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"}]
mam zmniejszone dane tylko do jednego BUYER_ID (user_id) uczynienia problem prosty do zrozumienia.
Problem Instrukcja-
muszę porównywać Table2
z Table1
, co oznacza, muszę zobaczyć, czy USER_ID
z Table2
i BUYER_ID
od Table1
(jak oboje są samo) zostanie dopasowane, a następnie w PURCHASED_ITEM
Tabela 2, która jest tablicą identyfikatorów PRODUCT_ID (takich samych jak ITEM_ID) i TIMESTAMPS (taka sama jak CREATED_TIME) powinna być taka sama jak ITEM_ID
i CREATED_TIME
w tym konkretnym identyfikatorze USER_ID (KUPUJĄCY_ID), a także czasami jest możliwe, że one (oznacza PURCHASED_ITEM
i ITEM_ID
, CREATED_TIME
) nie są takie same lub niektóre PRODUCT_ID i TIMESTAMPS brakuje w Table2
po porównaniu z Table1
.
Przez to mam na myśli liczbę PRODUCT_ID
i TIMESTAMPS
w Table2
powinien być taki sam jak zliczania ITEM_ID
i CREATED_TIME
w Tabela1 dla tego konkretnego BUYER_ID (user_id), a treść powinna być taka sama. Jeśli nie są one takie same lub brakuje wpisu z Table2
, to muszę wydrukować wynik, ten konkretny ITEM_ID
i CREATED_TIME
brakuje w Table2
lub PRODUCT_ID
i TIMESTAMPS
nie są takie same po porównaniu z Table1
.
Tak na przykład w tabeli 1. Obecnie dla tego BUYER_ID 1015826235
mam 5 ITEM_ID
i 5 CREATED_TIME
, więc w Table2 miałbym 5 PRODUCT_ID
i 5 TIMESTAMPS
dokładnie takie same, jak dla samego USER_ID(BUYER_ID)
Table1 w jednym rzędzie. Jeśli nie jest to samo lub brakuje wpisu, muszę wydrukować wynik, który pokazuje, że tego brakuje lub te dane są błędne.
Więc po prostu aby uczynić go bardziej swoim funkcjonalnym
PURCHASED_ITEM
jest tablicą Struct w Table2
i zawiera dwie rzeczy PRODUCT_ID
i TIMESTAMPS
.
Jeśli USER_ID
i BUYER_ID
zostanie spełniony to PRODUCT_ID
w Table2
powinny być dopasowane ITEM_ID
w Table1
i TIMESTAMPS
w Table2
powinny być dopasowane CREATED_TIME
w Table1
.
AKTUALIZACJA
HiveQL zapytań SQL Pytanie: -
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.
zapytań, które napisałem na pierwsze pytanie. Czy zapytanie jest prawidłowe?
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.
Cały ten odważny tekst był trochę oślepiający. – Ben