我有一个 SSIS 包,我想使用它来根据代理键映射表的值更新数据仓库暂存表中的列,该表包含与自然键配对的代理键。具体来说,我想使用缓存查找来更新事实登台表以包含库存维度的代理键,其方式与以下 SQL 相同。
UPDATE A
SET A.DWHSurrogateKey = B.DWHSurrogateKey
FROM SaleStagingTable A INNER JOIN inventoryStagingTable on B.OLTPInventoryKey = A.OLTPInventoryKey
不幸的是,从查找转换到目标的数据流的性质意味着它会创建一个全新的行,而不是更新现有的匹配行。是否可以操纵 SSIS 来做到这一点?
几个约束:
- 我的目标是 ADO .NET 目标,我们不能使用 OLE DB 目标或源(我们需要能够使用命名参数,而不能使用 OLE DB 连接)
- 我需要对多个维度执行此操作以将它们链接到事实表,因此我不能每次都将映射数据推送到新表,因为这变得非常混乱且难以管理
我希望能够按照这些人的建议进行操作,但使用 ADO 连接器而不是 OLE DB:
http://redsouljaz.wordpress.com/2009/11/30/ssis-update-data-from-different-table-if-data-is-null/
http://www.rad.pasfu.com/index.php?/archives/46-SSIS-Upsert-With-Lookup-Transform.html