微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决如何修复 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 举报,一经查实,本站将立刻删除。