Dies ist erste Tabelle in Hive-It enthält Informationen über den Artikel, den wir kaufen.Abfrage zwei verwandte Tabellen (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
)
Und dies sind die Daten in der obigen ersten Tabelle
**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
Dies ist zweite Tabelle in Hive- Es auch Informationen über die Elemente enthält, wir kaufen.
CREATE EXTERNAL TABLE IF NOT EXISTS Table2
(
USER_ID BIGINT,
PURCHASED_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
Und dies sind die Daten in der obigen Tabellen-
**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"}]
ich die Daten nur auf eine BUYER_ID reduziert haben (BENUTZER_ID) das Problem einfach zu machen, zu verstehen.
Problem Anweisung-
Ich brauche die Table2
mit Table1
, zu vergleichen, was bedeutet, dass ich, wenn USER_ID
von Table2
und BUYER_ID
von Table1
sehen müssen (da sie beide gleiche Sache sind) abgestimmt wird, dann PURCHASED_ITEM
in Tabelle2, die ein Array von PRODUCT_ID (dasselbe wie ITEM_ID) und TIMESTAMPS (dasselbe wie CREATED_TIME) ist, sollte ITEM_ID
und CREATED_TIME
in Table1
für diese bestimmte USER_ID (BUYER_ID) sein und manchmal ist es auch möglich, dass sie (bedeutet PURCHASED_ITEM
und ITEM_ID
, CREATED_TIME
) sind nicht gleich oder einige PRODUCT_ID und TIMESTAMPS fehlen von Table2
nach dem Vergleich von Table1
.
Damit meine ich die Anzahl der PRODUCT_ID
und TIMESTAMPS
in Table2
sollte für diese bestimmte BUYER_ID (BENUTZER_ID) und der Inhalt sollte gleich sein wie Graf von ITEM_ID
und CREATED_TIME
in Tabelle 1 gleich sein. Wenn sie nicht gleich sind oder Eintrag von Table2
fehlt, dann muss ich das Ergebnis drucken, diese besondere ITEM_ID
und CREATED_TIME
fehlt Table2
oder die PRODUCT_ID
und TIMESTAMPS
sind nicht gleichen, nachdem sie von Table1
zu vergleichen.
So zum Beispiel in Tabelle 1 zur Zeit für diesen BUYER_ID 1015826235
Ich habe 5 ITEM_ID
und 5 CREATED_TIME
, so in Tabelle 2 sollte ich 5 PRODUCT_ID
und 5 TIMESTAMPS
genau gleich wie Tabelle 1 für gleiche USER_ID(BUYER_ID)
in einer Reihe. Wenn es nicht dasselbe ist oder der Eintrag fehlt, muss ich das Ergebnis drucken, das anzeigt, dass es fehlt oder diese Daten falsch sind.
So einfach es in Table2
und es enthält zwei Dinge PRODUCT_ID
und TIMESTAMPS
PURCHASED_ITEM
ist ein Array von Struct mehr Klar- zu machen.
Wenn USER_ID
und BUYER_ID
wird dann abgestimmt PRODUCT_ID
in Table2
sollte mit ITEM_ID
in Table1
und TIMESTAMPS
in Table2
sollte mit CREATED_TIME
in Table1
abgestimmt werden abgestimmt werden.
AKTUALISIERT
HiveQL SQL Query Frage: -
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.
Abfrage, die ich für die erste Frage geschrieben. Ist die Abfrage richtig?
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.
All dieser kühne Text war ein wenig blendend. – Ben