✨ В предыдущем посте мы разобрали инкрементальную загрузку с сохранением всей историчности данных. Давайте разберем загрузку инкремента, чтобы в target таблицы оставались только актуальные значения данных, т.е. исторические значение перезаписывались актуальными.
Ключевые этапах этого процесса будут следующие:
1️⃣ Определение инкремента данных
Пример выделения инкремента из таблицы source по условию, что поле
update_date имеет сегодняшнюю датуSELECT *Лучше нам результат запроса сохранить в промежуточную временную таблицу.
FROM source s
WHERE update_date = CURRENT_DATE()
CREATE TEMPORARY TABLE tmp_increment AS
SELECT *
FROM source s
WHERE update_date = CURRENT_DATE()
2️⃣ Вставка инкремента в target таблицу с актуализацией значений данных (перезапись)
Выполняем в 2 шага:
1) Удаляем данные из target, которые есть во временной таблице по уникальному идентификатору записи (например, id). Это удалит нам записи, которые нужно обновить
DELETE FROM target2) Вставляем инкремент с актуальными записями из временной таблицы
WHERE id IN (SELECT id
FROM tmp_increment);
tmp_increment в target
INSERT INTO target
SELECT *
FROM tmp_increment;
Таким образом в target таблицу будут добавляться новые записи и перезаписываться обновленные актуальные записи из source
Оставляйте реакции, если пост был полезен 😉