如何修复 Redshift db 中的历史表?

问题描述

我在更新数据库中的历史表时遇到问题。 我在 ETL 工作中有 3 个步骤:

  1. 检测变化 - Matillion ETL 发现两个表之间的差异并将其写入 tmp 表
  2. 关闭当前 - 此步骤将 current_flag = 'Y' 的所有行更新为 'N' 并将 end_date 设置为 dateadd(day,-1,current_date)
  3. 插入行 - 第 1 步中 tmp 表中的所有行(仅过滤带有 N 和 C 指示符的行)都被附加到历史表中,其中 start_date 等于 dateadd(day,current_date) 并且结束日期等于 ' 2099-01-01'

发生的事情是,第 2 步和第 3 步是使用昨天的数据(来自 tmp 表)错误地手动执行的,并且在 15 分钟后,所有 3 个步骤的作业都按照预期使用新数据再次执行。 我有不同的 update_timestamps(2021-03-19 01:59:02 和 2021-03-19 02:11:57),可以用来解决这个问题。但是我在修复手动更新的数据时遇到了困难(有 start_date='2021-03-18' 和 end_date='2021-03-18' 和 current_flag='N'),我相信这些应该再次更新到 start_date ='2021-03-18' 和 end_date='2099-01-01' 和 current_flag='Y'),但我不确定如何处理新的工作数据(较新的时间戳 - 正确执行),因为它是在错误的数据。 我应该删除它并在手动修复 start_date='2021-03-18' 和 end_date='2021-03-18' 和 current_flag='N' 后重新运行吗? 另外,我觉得我在这里遗漏了一些步骤?

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)