如何处理 SCD 类型 2 维度和重复维度记录?

How to deal with SCD type 2 dimension and duplicate dimension records?

我最近实施了 SCD 类型 2 - 用于 OLAP 报告的客户维度。我们以前在类型 1 上使用它,其中 customerID 是构建维度的关键,但由于此维度将获得重复记录,例如C_001 有两条记录,我认为使用相同的 CustomerID 作为键构建维度是不切实际的。我应该将 Surrogate 视为主键,并使用 'CustomerID' 作为属性吗?

这是 SCD 类型 2 维度的最佳实践吗?

Customer Dimension snapshot pic.

当然应该使用代理键作为主键,但这并不能解决这里的主要问题。

您的 business key - 以前是您的 customerID - 也必须是唯一的,以便在构建您的事实 table 时分配正确的代理键,否则您将创建重复项,如果您只使用客户 ID。

查看您提供的数据示例,您的业务密钥必须由 customerID 和 Region 组成。

虽然,我必须指出您的模型看起来有点奇怪,因为客户应该始终分配给它一个唯一的 ID,并且 if 这种情况是客户可以在不同的地方设有办公室regions 那么一个更 suitable 的模型会有一个附加到事实的位置维度,它会告诉你给定事实相关的确切区域(或城市,或国家等)。