【发布时间】:2018-02-28 13:05:59
【问题描述】:
我有一个包是由另一位曾在该公司工作的开发人员设计的。包从源中获取数据并将其插入到目标中。渐变维度任务有 4 列,设置为历史属性。这意味着当任何值更改时它将插入一个新行。业务密钥称为 PropertyID。
在目标表中,PropertyID 是主键。当包运行时,我们得到主键冲突错误。这是可以理解的,因为当历史属性发生变化时,目标表不能插入重复值。这可能不是最好的设计。
我想纠正这个问题,但我不确定正确的方法。我尝试将一个新的 INT IDENTITY 列(用作 SCD 向导中的业务键)添加到目标表,并使当前的 PropertyID 列不是主键。但 INT IDENTITY 列未显示在 SCD 向导中。
如果有人能告诉我正确的方法,我将不胜感激。
谢谢。
【问题讨论】:
-
您希望如何使用 SCD 更改主键。我猜您使用的是 SCD 类型 1,不应该存在主键约束问题,因为它在 2 个不同的列中添加了历史值和新值。
primary key列保持不变 -
此处不应使用业务密钥。始终建议仅使用代理键。您的业务密钥 (PropertyID) 可以在此处用作唯一密钥