Это первая таблица в 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>>
)
И это данные в приведенной выше table-
**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
от Table2
и BUYER_ID
от Table1
(так как они оба то же самое) получает соответствующее значение, то PURCHASED_ITEM
в Таблица 2, которая представляет собой массив PRODUCT_ID (то же, что и ITEM_ID) и TIMESTAMPS (то же, что и CREATED_TIME), должна быть такой же, как ITEM_ID
и CREATED_TIME
в Table1
для этого конкретного USER_ID (BUYER_ID), а также иногда бывает, что они (средства PURCHASED_ITEM
и ITEM_ID
, CREATED_TIME
) не совпадают или некоторые PRODUCT_ID и TIMESTAMPS отсутствуют с Table2
после сравнения с Table1
.
Под этим я имею в виду подсчет PRODUCT_ID
и TIMESTAMPS
в Table2
должно быть таким же, как подсчет ITEM_ID
и CREATED_TIME
в табл.1 для этого конкретного BUYER_ID (USER_ID) и содержание должно быть таким же. Если они не являются одинаковыми или запись отсутствует Table2
, то мне нужно распечатать результат, данный ITEM_ID
и CREATED_TIME
отсутствует Table2
или PRODUCT_ID
и TIMESTAMPS
не то же самое после того, как по сравнению с Table1
.
Так, например, в Table1 в настоящее время для этого BUYER_ID 1015826235
я имею 5 ITEM_ID
и 5 CREATED_TIME
, поэтому в Table2 я должен 5 PRODUCT_ID
и 5 TIMESTAMPS
точно так же, как Table1 для одной USER_ID(BUYER_ID)
в одном ряду. Если это не то же самое или запись отсутствует, мне нужно распечатать результат, показывая, что это отсутствует или эти данные неверны.
Так просто, чтобы сделать его более, очищающего
PURCHASED_ITEM
является массив структур в Table2
и содержит две вещи PRODUCT_ID
и TIMESTAMPS
.
Если USER_ID
и BUYER_ID
получает соответствие затем PRODUCT_ID
в Table2
должен быть согласован с ITEM_ID
в Table1
и TIMESTAMPS
в Table2
должны быть согласованы с CREATED_TIME
в Table1
.
ОБНОВЛЕНО
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.
запросов, которые я написал для первого вопроса. Правильно ли это запрос?
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