我有一个客户表和其他几个包含客户 ID 的维度表。
我想要的是按顶级客户选择过滤的维度表。
所以如果我有:
客户
身份证 |姓名
维度A
身份证 |客户 ID |值1
身份证 |客户 ID |值2
维度B
身份证 |客户 ID |值3
身份证 |客户 ID |值4
事实
身份证 |尺寸BId |事实值1 ...
身份证 |尺寸BId |事实值2 ...
..是否可以过滤 CustomerId 并通过维度值渗透到事实表?
或者,我是否始终需要在维度使用中将客户与事实相关联?我可以看到如何通过 DimensionA 将客户与事实关联起来,但我只能将其与一个中间表关联,而不能与两个或更多中间表关联。
或者,我是否还需要在事实表中实际包含 CustomerId?
如有任何帮助,我们将不胜感激。
最佳答案
这完全取决于您用于数据仓库的架构。
我认为星型架构是您拥有的最佳选择。
如果您使用它,您需要在事实表中拥有一个 customer_id 并通过维度使用将它们链接起来。 DimensionA和DimensionB也是如此(即Fact表需要有对应的dimensionA和dimension B的id)。
如果您使用该方法执行此操作,则无需在维度 A 或维度 B 上拥有客户 ID。链接将通过事实表实现。
否则考虑一下:你真的需要二维吗?由于两个维度几乎相同,如果您添加一个名为“类型”的新字段(其中类型在数据源表中为 A 和 B)并将该类型添加到层次结构中,不是会更好吗?这将解决很多问题并使您的架构更加一致!!!
这是来自 Ralph Kimball 网站的链接 Kimball's_Site_Link以比我更好的方式解释什么是什么。您会发现最后一段内容非常丰富!
关于SSAS 2012 使用维度值过滤其他维度表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12981667/