1

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

MsSQL 中的锚模型图

此时我在 Visual Studio 中有一个非常简单的集成服务项目,它看起来像这样。控制流:
在此处输入图像描述 例如 Load_territories 是: ![在此处输入图像描述

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

4

1 回答 1

2

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

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

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

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

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

于 2016-04-29T07:53:35.933 回答