Redshift-进行数据的增量更新

时间:2018-07-06 08:44:51

标签: sql sql-update amazon-redshift sql-insert

我正在尝试对我的数据集市执行增量更新。

下面是我的数据集市的当前视图

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 列,我需要根据 created_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 :(得分:0)

  

主键是sale_id列,我需要根据created_at或Updated_at执行更新或插入操作。

您可能会这样做,created_at = updated_at或Updated_at为null表示create否则为update。我认为这是查找增量记录(或更改的记录)的正确方法

  

任何人都可以建议执行增量更新的最佳方法是什么。目前,我做了一个简单的删除操作,然后插入到表中以每小时刷新一次数据。

与Redshift一样,您的DELETE然后INSERT方法是正确的

  

UPDATE =删除+插入

您正在做显式的DELETE和INSERT,因此这很好。

尽管我没有指出,但我想指出一件事,请确保您大多数时候或经常进行VACUUM DELETE Only,以便在delete/insert queries之后获得更好的性能。