Улей: Вставьте из одной таблицы в другую все пропущенные записи, основываясь на максимальной дате - PullRequest
0 голосов
/ 27 марта 2019

Я пытаюсь ежедневно копировать данные из одной таблицы в другую.

В таблицу A добавлены данные от третьей стороны, и мне нужно взять любые новые данные, которые они добавили в мою таблицу, где-то в другом месте:

Итак: вставьте все записи из таблицы A, которых нет в таблице B, на основе столбца даты.

Это то, что я пробовал, но бегать нужно почти вечно и, кажется, не очень чисто.

INSERT INTO table B
PARTITION (`date_col`)
SELECT col_1, date_col
FROM A
WHERE cast(`date_col` as date) NOT IN (select `date_col` from B);

Есть ли для меня чистый и эффективный способ сделать это? Я хотел бы сохранить максимальную дату таблицы B в переменной, а затем сделать что-то вроде:

WHERE cast(`date_col` as date) > max_date_of_table_B;

Спасибо!

1 Ответ

0 голосов
/ 27 марта 2019

Пожалуйста, попробуйте это.

set max_date='2018-12-31'; --whatever date you wanted to keep

INSERT INTO table B
PARTITION (`date_col`)
SELECT col_1, date_col
FROM A
WHERE cast(`date_col` as date) > ${hiveconf:max_date};

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...