【问题标题】:Redshift - Doing incremental updates of dataRedshift - 对数据进行增量更新
【发布时间】:2018-07-06 08:44:50
【问题描述】:

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

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

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_atupdated_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()))

谁能帮忙,谢谢..

【问题讨论】:

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


    【解决方案1】:

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

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

    谁能建议执行增量更新的最佳方式。目前我做了一个简单的删除,然后插入到表中以每小时刷新一次数据。

    您的 DELETE 然后 INSERT 方法是正确的,就像在 Redshift 中一样

    更新=删除 + 插入

    您正在执行明确的 DELETE 和 INSERT,因此这很好。

    虽然我想在这里指出一件事,但没有被问到,请确保您大部分时间或经常使用VACUUM DELETE Only,以便在delete/insert queries 之后获得更好的性能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-06
      • 2020-05-12
      • 2010-12-23
      • 1970-01-01
      • 2017-04-13
      • 1970-01-01
      • 2019-06-14
      • 2014-04-27
      相关资源
      最近更新 更多