哪个是维度的最佳方法(SCD-2 或 SCD-1 + 全新维度)

Posted

技术标签:

【中文标题】哪个是维度的最佳方法(SCD-2 或 SCD-1 + 全新维度)【英文标题】:Which is the best approach for a dimension (SCD-2 or a SCD-1 + a whole new dimension) 【发布时间】:2016-09-22 14:21:41 【问题描述】:

假设我有以下情况:

具有一些非易变属性的维度产品(描述和直径 - 它们只能通过 SCD-1 更改进行更改以进行更正)和一个可能易变的属性(销售组,它可以随时间变化相同的产品)。

因此,当一种产品的这些易变属性发生变化时,我需要以某种方式对其进行跟踪。

我有这两种方法:

对于两者:继续将 SCD-1 用于非易失性属性。

方法 #1: 仅在 product_dim 中将 SCD-2 用于可变属性。

方法 #2: 让销售组成为一个全新的维度,每次销售都将跟踪 ETL 时刻的当前价值。这里不需要 SCD-2。

我是数据仓库的新手,我正在尝试了解哪个更好以及为什么。我的目标之一是使用 OLAP 软件来阅读所有这些内容。

【问题讨论】:

我认为第二种方法很聪明,因为您可以回答“产品 X 的销售组如何随时间变化?”的问题。更容易。 【参考方案1】:

这一切都取决于您模型的业务需求。我对您的问题的业务了解不够,但根据经验,如果您想按 Selling Group 进行分析(即:Selling Group X 销售的所有产品的总数量),那么您应该创建一个单独的维度。所以在这种情况下方法#2 是正确的。 考虑一般概念并假设销售组是某种产品组,将其作为产品的属性是没有意义的。

如果您想了解有关维度建模的更多信息,我建议您查看Ralph Kimball's work(如果您尚未完成)。他的书The Data Warehouse Toolkit 是一个很好的资源,其中涵盖了您的问题和更多技术。当出现这样的问题时,这是一个很好的工具。大多数经验丰富的数据建模师都会时不时地查阅它的副本。

【讨论】:

以上是关于哪个是维度的最佳方法(SCD-2 或 SCD-1 + 全新维度)的主要内容,如果未能解决你的问题,请参考以下文章

无代理键的 SCD 1 维

连接由公共事实表连接的多个维度表的记录的最佳方法是啥

合并来自不同粒度维度的数据

沿轴插入 numpy.ndarray 的最佳方法

这是在一行代码中向 numpy 数组添加额外维度的最佳方法吗?

调试或跳过顺序 pytorch 模型的最佳方法