SSAS 2012使用维值过滤其他维度表

时间:2012-10-19 20:03:38

标签: ssas dimension

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

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

所以,如果我有:

客户
Id |名称

DimensionA
Id | CustomerId |值1
Id | CustomerId |值2

DimensionB
Id | CustomerId |值3
Id | CustomerId | VALUE4

事实
Id | DimensionBId | FactValue1 ...
Id | DimensionBId | FactValue2 ......

..是否可以过滤CustomerId并将尺寸值向下细化到事实表?

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

或者,我是否还需要在Fact表中实际拥有CustomerId?

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

这一切都取决于您用于DataWarehouse的架构。

我认为星型架构是您的最佳选择。

如果您使用它,则需要在事实表中包含customer_id,并通过维度用法链接它们。对于DimensionA和DimensionB也是如此(即Fact表需要具有dimensionA和维B的相应id。)

如果您使用该方法执行此操作,则无需在维A或维B上拥有客户ID。链接将通过Fact表实现。

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

以下是Ralph Kimball网站Kimball's_Site_Link的链接,以比我的更好的方式解释了什么。你会发现最后一段非常有用!