如何使用 ETL 过程将数据从 OLE DB 源发送到 Anchor 模型表?

How to send data from OLE DB source to Anchor model tables using ETL procedure?

我目前正在解决这个任务:一些数据应该从 AdventureWorks2012 发送到 MsSQL 中同一服务器上的 Anchor 模型 tables。 这是我的锚模型

此时我在 Visual Studio 中有一个非常简单的 Integration Services 项目,它看起来像这样。 控制流程:
例如 Load_territories 是:

主要要求是在 MsSQL 中填充 Anchor 模型 table 的所有 table,但我一直面临一个问题:table 中的属性数量是不同,其中一些在重复 在第二张 table 的这张图片中,基本上 TR_ID、TR_GRP_TR_ID、TR_TID_TR_ID、TR_TNM_TR_ID 包含与 dwh_key 相同的值,但它是不可能在属性之间创建 one-to-many 关系。我的导师建议我使用 Lookup,但我不知道如何在这个项目中实现它们

这可能被认为是作弊,但如果您将数据插入最新视图而不是单独的 6NF 表,所有这些 ID 字段都将由底层触发器逻辑填充。我怀疑这会破坏使用 SSIS 的目的,因为您将有效地按顺序而不是并行加载属性。

另一种选择是将代理密钥管理留给 ETL 工具。这将需要您将身份的数据类型从整数切换为 GUID:s。然后 SSIS 可以生成一个 GUID,然后您可以使用完全相同的 GUID 来填充所有属性。请注意,必须先加载锚点,否则您将违反外键。

不过,最常见的解决方案是将代理密钥管理留给数据库(并使用整数)。您将有一个步骤,在该步骤中,您使用要创建的所需数量的新身份填充锚点中的元数据列。使用元数据编号,您可以 select 新生成的身份并将它们合并到您的数据流中。哪个数字分配给哪一行并不重要。之后,可以并行填充所有属性,包括它们的 ID 列。

当然,如果这不仅仅用于初始加载,您还必须添加步骤来检测您正在加载的数据是否已知。

我还可以推荐观看此博客中引用的视频教程post:https://clinthuijbers.wordpress.com/2013/06/14/ssis-anchor-modeling-example-tutorial/