2

我有一个客户表和其他几个包含客户 ID 的维度表。

我想要的是由顶级客户选择过滤的维度表。

所以如果我有:

客户
ID | 姓名

维度
A ID | 客户 ID | 值 1
ID | 客户 ID | 价值2

维度
B ID | 客户 ID | 值 3
ID | 客户 ID | 价值4

事实
ID | 维度BId | FactValue1 ...
ID | 维度BId | 事实价值2 ...

..是否可以将 CustomerId 过滤并通过维度值向下渗透到事实表?

或者,我是否总是需要在维度使用中将客户与事实相关联?我可以看到如何通过 DimensionA 将 Customer 与 Fact 关联起来,但我只能将它与一个中间表关联,而不是两个或更多。

或者,我是否也需要在 Fact 表中实际包含 CustomerId?

任何帮助将不胜感激。

4

1 回答 1

2

这一切都取决于您用于 DataWarehouse 的模式。

我认为星型模式是您拥有的最佳选择。

如果你使用它,你需要在事实表中有一个 customer_id 并通过维度使用来链接它们。DimensionA 和 DimensionB 也是如此(即 Fact 表需要有对应的 id 对应于维度 A 和维度 B)。

如果您以这种方法执行此操作,则无需在维度 A 或维度 B 上都有客户 ID。链接将通过 Fact 表实现。

否则考虑一下:你真的需要二维吗?由于这两个维度几乎相同,如果您在数据源表中添加一个名为 Type 的新字段,其中类型将是 A 和 B,并将类型添加到您的层次结构中,会不会更好?这将解决很多问题并使您的架构更加一致!!!

这是来自 Ralph Kimball Kimball's_Site_Link网站的链接,它以比我更好的方式解释了什么是什么。您会发现最后一段内容非常丰富!

于 2012-10-23T10:40:31.443 回答