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

Posted

技术标签:

【中文标题】从一个维度表到单个事实表的多个连接【英文标题】:Multiple Joins from one Dimension Table to single Fact table 【发布时间】:2015-03-17 19:10:15 【问题描述】:

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

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

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

【问题讨论】:

我得到了这个使用角色扮演维度功能...但我有一个新问题..我看到 SSAS 为多维数据集中的每个日期创建单独的维度...我希望所有这些维度被分组在单个维度或维度文件夹下。这可能吗? 【参考方案1】:

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

有一个 good article on MSSQLTips.com 涵盖了这个主题。

【讨论】:

看起来这就是我想要的。不知道这个功能开箱即用,即当您从事实表有多个连接到同一个维度时,多维数据集维度向导会自动在使用选项卡中创建多个角色扮演维度。非常酷!

以上是关于从一个维度表到单个事实表的多个连接的主要内容,如果未能解决你的问题,请参考以下文章

维度建模中事实表的两个或多个相似计数

结合事实表和维度表的SQL语句?

维度表和事实表的含义是啥?

处理地址维度并在多个事实中扮演角色

包含来自多个源表的数据的维度中自然键的最佳实践

维度表、桥表和事实表连接