我正在尝试对我的数据集市执行增量更新。
下面是我的数据集市的当前视图
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()))
谁能帮忙,谢谢..
答案 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
之后获得更好的性能。