SSIS - 无法在对象 'dbo.FACT_TABLE' 中插入重复键

SSIS - Cannot insert duplicate key in object 'dbo.FACT_TABLE'

我知道在 Fact Table 中我们不能有重复的记录,但我是 SQL 集成服务的新手,我正在寻找一个可以识别的包,如果事实表中已存在代理键...

此刻我有这个包裹:

每个查找对象都获取我的数据仓库中每个维度的业务键。

第一次运行很好,因为事实上Table我没有记录,但接下来我做了测试,我又运行同样的数据(因为将来我想每 10 分钟 运行 这个包,所以它会经常获得相同的数据)并且我收到以下错误(我非常理解我想建立一种自动处理此问题的方法):

[Load into dbo_DimCI [144]] Error: SSIS Error Code DTS_E_OLEDBERROR. An OLE DB error has occurred. Error code: 0x80004005. An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "The statement has been terminated.". An OLE DB record is available. Source: "Microsoft SQL Server Native Client 11.0" Hresult: 0x80004005 Description: "Violation of PRIMARY KEY constraint 'PK_FACT_FACT_TABLE'. Cannot insert duplicate key in object 'dbo.FACT_TABLE'. The duplicate key value is (337, 44, 3, 19, 4682, 12).".

我需要在包中插入哪些对象才能处理此错误?

我相信您的意图是在每次加载时只加载增量。

这意味着如果一条记录已经存在于事实table中,则不应再次插入该记录。

您可以使用合并查询来实现此目的。

我没有加载事实的示例 table,但我可以向您指出一个 post 的示例,其中讨论了加载 Type 2 Dim Table。

检查这个 link:https://www.mssqltips.com/sqlservertip/2883/using-the-sql-server-merge-statement-to-process-type-2-slowly-changing-dimensions/

您应该能够在您的 SSIS 包中使用这样的语句来更新您的事实 table。

很高兴回答任何进一步的问题。

干杯 尼辛