【发布时间】:2018-08-07 10:35:13
【问题描述】:
经过一番研究,我发现由于 Redshift 不支持合并/更新插入,因此有些人正在使用临时表来更新/插入记录。由于 Redshift 也不支持过程(触发器等),是否有人对他们如何自动化此过程(lambda、数据管道等)提出建议?
【问题讨论】:
经过一番研究,我发现由于 Redshift 不支持合并/更新插入,因此有些人正在使用临时表来更新/插入记录。由于 Redshift 也不支持过程(触发器等),是否有人对他们如何自动化此过程(lambda、数据管道等)提出建议?
【问题讨论】:
我认为没有一个正确的答案。总的来说,我知道有两种基本方法。
我相信选项 1 可能是最好的方法。 AWS Data Pipeline 通过将insertMode 字段设置为OVERWRITE_EXISTING 来支持RedshiftCopyActivity。
在我的工作中,我们在数据管道中手动完成了这项工作,方法是将加载命令运行到临时表并在同一个 sql 事务中执行 upsert。
另一种方法(选项 2)是让您的 ETL 只是将新数据附加到暂存表(您可以使用 AWS Firehose 进行类似的操作),然后您可以将其与计划的 cronjob 一起使用以更新目标表预定的依据。这样做的好处是您的 ETL 更简单,但 cronjob 成为另一个故障点。
【讨论】: