Redshift - инкрементное обновление данных - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь выполнить постепенное обновление моего datamart.

Ниже приведено текущее представление моего datamart

sale_id,prod_name,created_date,updated_date,prod_category
1,prod_1,2018-07-05 10:00:00,2018-07-05 11:00:00,Type_A
2,prod_1,2018-07-05 12:00:00,2018-07-05 12:05:00,Type_A
3,prod_2,2018-07-05 14:20:00,2018-07-05 15:33:00,Type_B
4,prod_3,2018-07-05 18:50:00,2018-07-05 19:00:00,Type_C

Первичный ключ - это sale_id столбец, и мне нужно выполнить обновление или вставку на основе create_at или updated_at .

Может кто-нибудь посоветовать, как лучше всего выполнять пошаговые обновления. В настоящее время я делаю простое удаление, а затем вставляю в таблицу данные каждый час.

select s.sale_id,p.prod_name,s.created_date,s.updated_date,p.prod_category
from sales s join products p on s.prod_id=p.id and s.created_at >=CURRENT_DATE - 30;

Я пытаюсь выполнить почасовое обновление, которое будет выглядеть следующим образом:

(created_date >= dateadd(hour, - 1 , getdate())) or (updated_date >= dateadd(hour, - 1, getdate()))

Может ли кто-нибудь помочь, спасибо ..

1 Ответ

0 голосов
/ 06 июля 2018

Первичный ключ - это столбец sale_id, и мне нужно выполнить обновление или вставку на основе созданных_ или обновленных_ат.

Возможно, вы делаете как, create_at = updated_at или updated_at имеет значение NULL означает create иначе update. Я думаю, что это правильный подход для поиска дополнительных записей (или измененных записей)

Может кто-нибудь посоветовать, как лучше всего выполнять инкрементные обновления. В настоящее время я делаю простое удаление, а затем вставляю в таблицу данные каждый час.

Ваш подход DELETE, а затем INSERT правильный, как в Redshift

ОБНОВЛЕНИЕ = УДАЛИТЬ + ВСТАВИТЬ

Вы делаете явные DELETE и INSERT, следовательно, это хорошо.

Одна вещь, хотя я хотел бы указать здесь, хотя и не спрашивать, убедитесь, что вы делаете VACUUM DELETE Only большую часть времени или часто, чтобы получить лучшую производительность после delete/insert queries.

...