Sql 红移-执行数据的增量更新

Sql 红移-执行数据的增量更新,sql,sql-update,amazon-redshift,sql-insert,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

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

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

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\u id列,我需要根据创建的\u at或更新的\u 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()))
有人能帮忙吗,谢谢

主键是sale\u id列,我需要根据创建的\u at或更新的\u at执行更新或插入

您可能会这样做,created_at=updated_at或updated_at为null意味着
create
else
update
。我认为这是查找增量记录(或更改的记录)的正确方法

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

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;
删除然后插入的方法是正确的,就像红移一样

更新=删除+插入

您正在执行显式的删除和插入,因此这很好

有一件事我想在这里指出,尽管没有被问到,但请确保在
删除/插入查询之后,大多数时间或频繁地执行
真空删除
,以获得更好的性能