经过一些研究后,我发现由于Redshift不支持merge / upsert,因此有些人正在使用登台表来更新/插入记录。由于Redshift也不支持程序(触发器等),是否有人建议他们如何自动化这个过程(lambda,数据管道等)?
答案 0 :(得分:2)
我认为没有一个正确的答案。从广义上讲,我知道有两种基本方法。
我相信选项1可能是最好的方法。通过将insertMode
字段设置为OVERWRITE_EXISTING
,AWS Data Pipeline使用RedshiftCopyActivity支持此功能。
在我的工作中,我们在数据管道中手动完成了这一操作,方法是将load命令运行到staging表,并在同一个sql事务中运行upsert。
另一种方法(选项2)是让您的ETL只是将新数据附加到临时表(您可以使用AWS Firehose进行此类操作),然后将其与预定的cronjob一起使用以更新目标表预定的基础。这样做的好处是你的ETL更简单,但是cronjob成为另一个失败点。