我们说我有以下情况:
具有一些非易失性属性的维度产品(描述和直径 - 它们只能通过SCD-1更改进行更改以进行更正)和可以挥发的属性(销售组,它可以随时间变化相同的产品)。
因此,当一个产品的这些易失性属性发生变化时,我需要以某种方式跟踪它们。
我接受了这两种方法:
对于两者:继续将SCD-1用于非易失性属性。
方法#1:在product_dim中仅对易失性属性使用SCD-2。
方法#2:让销售组成为一个全新的维度,每次销售都会跟踪ETL时刻的当前价值。这里不需要SCD-2。
我是Data Warehousing的新手,我正在努力了解哪个更好,为什么。我的目标之一是使用OLAP软件来阅读所有这些内容。
答案 0 :(得分:1)
这一切都取决于您的模型的业务需求。我不能从您的问题中了解业务,但根据经验法则,如果您想通过销售集团进行分析(即:销售集团X销售的所有产品的总数量),那么您应该创建一个单独的维度。所以在这种情况下方法#2是正确的。 考虑到一般概念并假设销售团队是某种产品组,将产品作为产品的属性是没有意义的。
如果您想了解有关立体建模的更多信息,我建议您查看Ralph Kimball's work,如果尚未完成。他的书The Data Warehouse Toolkit提供了一个很好的资源,涵盖了您的问题和更多技巧。当这样的问题弹出时,它是一个很好的工具,可以超过你的桌面。大多数经验丰富的数据建模者都有一份副本,可以不时地进行咨询。