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

Posted

技术标签:

【中文标题】如何处理 SCD 类型 2 维度和重复维度记录?【英文标题】:How to deal with SCD type 2 dimension and duplicate dimension records? 【发布时间】:2019-11-06 14:18:55 【问题描述】:

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

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

Customer Dimension snapshot pic.

【问题讨论】:

是的,你是对的,代理应该是自增主键 @vldmrrdjcc - 谢谢! 【参考方案1】:

代理键当然应该用作主键,但这并不能解决这里的主要问题。 您的业务键(以前是您的 customerID)也必须是唯一的,以便在构建事实表时分配正确的代理键,否则如果您只使用 customerID,则会创建重复项。 查看您提供的数据示例,您的业务密钥必须由 customerID 和 Region 组成。 虽然,我必须指出,您的模型看起来有点奇怪,因为客户应该总是有一个唯一的 id 分配给它,并且 如果 的情况是客户可以在不同的地区设有办事处,那么更合适的模型会在事实上附加一个位置维度,它会告诉您与给定事实相关的确切区域(或城市或国家等)。

【讨论】:

以上是关于如何处理 SCD 类型 2 维度和重复维度记录?的主要内容,如果未能解决你的问题,请参考以下文章

如何处理数据仓库中重复id包含略有不同值的维度表?

SSAS - 如何处理具有有效重复项的维度?

如何处理具有相似属性的维度?

渐变维度 (SCD) 类型 2 的不同场景

如何处理大维度表

如何处理具有维度无的张量乘法