将事务表记录传输到数据仓库的最佳 ETL 设计

Amm*_*arR 5 data-warehouse sql-server etl ssis design-pattern

我每天有 2 种类型的表来填充数据仓库,查找表或配置表只有 100 条记录,这很容易,我只需截断和重新填充表。

但是对于有很多记录的事务表,我通常会递增,即我每天运行 ETL 以添加昨天的记录。

我有两个我总是面临的问题

  1. 当工作因任何原因失败时(我失去了 Days 交易)
  2. 当由于任何原因作业运行两次或我运行两次时(我得到重复)

现在我正在尝试设计一种方法来解决这两个问题,并尝试以这样一种方式开发 ETL,以便在发生任何这些事件时它可以自动修复它。

我希望它检查是否缺少天数并运行该天的 ETL,并检查是否有重复项并删除它们。

以下是我认为的方法 1. 我在过去 5 天里不管,ETL 运行的每一天,删除过去 5 天并重新填充。2.我检查目标表是否在上个月缺少日期,然后我用缺少的天数查询源。

请记住,源是生产环境中的一个巨大表,我必须在从它请求时最大限度地优化我的查询。

谢谢

sa5*_*555 1

您能否向数据仓库添加一个额外的表,用于维护导入的事务表?

维护表可以这样称呼:

ImportJob
    ImportID (primary key)
    TransactionDate
Run Code Online (Sandbox Code Playgroud)

将 ImportID 列添加到事务表中,并在加载数据时设置它。

导入表将有一条记录记录每天导入的交易量。TransactionDate 的唯一约束将防止重新加载数据两次。如果导入失败,您还可以通过原子性快速删除事务。您可以一次查询生产表中一天的数据并填写任何缺失的日期。