SSAS 2012 使用维度值过滤其他维度表
Posted
技术标签:
【中文标题】SSAS 2012 使用维度值过滤其他维度表【英文标题】:SSAS 2012 Using a dimension value to filter other dimension tables 【发布时间】:2012-10-19 20:03:38 【问题描述】:我有一个客户表和其他几个包含客户 ID 的维度表。
我想要的是由***客户选择过滤的维度表。
如果我有:
客户 身份证 |名称
维度A 身份证 |客户 ID |价值1 身份证 |客户 ID |价值2
维度B 身份证 |客户 ID |价值3 身份证 |客户 ID |价值4
事实 身份证 |维度BId | FactValue1 ... 身份证 |维度BId |事实价值2 ...
..是否可以过滤 CustomerId 并通过维度值向下渗透到事实表?
或者,我是否总是需要在维度使用中将客户与事实相关联?我可以看到如何通过 DimensionA 将 Customer 与 Fact 关联起来,但我只能将它与一个中间表关联,而不是两个或更多。
或者,我是否还需要在 Fact 表中实际包含 CustomerId?
如有任何帮助,我们将不胜感激。
【问题讨论】:
【参考方案1】:这一切都取决于您用于 DataWarehouse 的架构。
我认为星型架构是您拥有的最佳选择。
如果你使用它,你需要在事实表中有一个 customer_id 并通过维度使用来链接它们。 DimensionA 和 DimensionB 也是如此(即 Fact 表需要有对应的 id 为维度 A 和维度 B)。
如果您以这种方法执行此操作,则无论是维度 A 还是维度 B,都不需要客户 ID。该链接将通过 Fact 表实现。
否则考虑一下:你真的需要二维吗?由于这两个维度几乎相同,如果在数据源表中添加一个名为 Type 的新字段,其中 type 为 A 和 B,并将类型添加到 Hierarchy 中会不会更好?这将解决很多问题并使您的架构更加一致!!!
这是来自 Ralph Kimball Kimball's_Site_Link 网站的链接,它以比我更好的方式解释了什么是什么。您会发现最后一段内容非常丰富!
【讨论】:
非常感谢您的回答。该问题的尺寸已大大简化。将 CustomerId 放在事实表上是有意义的,但我也需要将其保留在维度上,因为维度成员与给定的客户相关。我希望以某种方式将客户加入到事实和维度中,以将所有内容与客户联系起来。 如果您将客户 ID 放在 Fact 表中,您将能够通过事实加入客户 ID 和维度(SSAS 将自动执行此操作)。示例:CustomerDim -> FactSales 还请记住,SSAS 不是数据库。一切都是关于您要计算的事物的聚合。如果客户-事实-维度关系不存在,则没有(明显的)理由让客户加入维度!这在维度使用选项卡中很明显,您只能将维度连接到其对应的事实表,而不能将维度连接到另一个。以上是关于SSAS 2012 使用维度值过滤其他维度表的主要内容,如果未能解决你的问题,请参考以下文章