从一个维度表到单个事实表的多个联接

时间:2015-03-17 19:10:16

标签: ssas olap olap-cube

我有一个事实表,其中包含4个日期列CreatedDate,LoginDate,ActiveDate和EngagedDate。我有一个名为DimDate的维度表,其主键可以用作事实表中所有4个日期列的外键。所以模型看起来像这样。 enter image description here

但问题是,当我想根据日期列对度量进行子过滤时。例如:计算上个月创建并在本月参与的所有用户。这种设计无法做到这一点,因为当我使用创建日期过滤度量时,我无法进一步过滤掉参与日期的不同时间窗口。由于所有连接到相同的维度,它们不能独立工作。

但是,如果我为每个列创建一个单独的日期维度表,并像这样加入它们那么它可以工作。 enter image description here 但是,当我在真实场景中的事实表中有20个不同的日期列时,这看起来非常麻烦,我必须创建20个不同的维度并逐个连接它们。有没有其他方法可以实现我的方案而不创建多个重复的日期维度?

1 个答案:

答案 0 :(得分:4)

这个概念被称为角色扮演维度。您不必为每个日期将表格添加到DSV或实际尺寸一次。而是添加日期一次,然后转到维度用法选项卡。单击“添加多维数据集维度”,然后选择日期暗淡。右键单击并重命名。然后更新关系以使用正确的字段。

有一个涵盖此主题的good article on MSSQLTips.com