Ssas 我是否应该将所有外键从主事实表复制到其他相关表?

Ssas 我是否应该将所有外键从主事实表复制到其他相关表?,ssas,data-warehouse,cube,Ssas,Data Warehouse,Cube,我有一个主事实表,其中包含大约10个外键。现在我有其他4个事实表,它们与主事实表之间有N:1关系。 问题是,我应该将所有外键复制到这4个事实表中,还是应该在SSAS多维数据集处理期间将运行时连接到主事实表 利与弊是什么?我似乎无法在评论中添加换行符。所以我在这里留下评论。 当然主要事实表是 事实表(PKey、FKey1、FKey2、FKey3、FKey4、值) 相关事实表如 FactTable1(PKey,FactTable.PKey,ErrorCounter) FactTable2(PKey,

我有一个主事实表,其中包含大约10个外键。现在我有其他4个事实表,它们与主事实表之间有N:1关系。 问题是,我应该将所有外键复制到这4个事实表中,还是应该在SSAS多维数据集处理期间将运行时连接到主事实表


利与弊是什么?

我似乎无法在评论中添加换行符。所以我在这里留下评论。
当然主要事实表是
事实表(PKey、FKey1、FKey2、FKey3、FKey4、值)
相关事实表如
FactTable1(PKey,FactTable.PKey,ErrorCounter)
FactTable2(PKey,FactTable.PKey,EventCounter)

问题是,我是否应该将FactTable1或FactTable2更改为这样的结构:

FactTable1(PKey,FactTable.PKey,FactTable.FKey1,FactTable.FKey2,FactTable.FKey3,FactTable.FKey4,ErrorCounter)

出于什么原因,您希望将其全部放在一个事实表中?它们在SSA中作为度量/组如何关联

您现在是否存在性能问题?如果在单独的表中处理多维数据集需要5秒以上的时间,并且在一个表中加载所有多维数据集需要5分钟的ETL,那么保持其原样会更明智。如果是另一种方式,也许把它全部放在一个事实表中会更好


在SSAS中,如何使用Dim和Fact之间的关系对多维数据集进行建模,不必与关系数据库中的表相互关联的方式相同。

如果性能是您的目标,空间不是问题,并且您将从子事实表报告,而不参考父表,那么请确保,将FK添加到其他事实表中,不会丢失任何东西,并可能获得一点速度


但是,如果在查询相关表时总是包含父事实表,那么就没有意义了(因为您总是在进行连接,并因此产生了成本)

您能举个例子吗。这将更容易分析和确定。主要事实表是FactTable(PKey,FKey1,FKey2,FKey3,FKey4,Value)相关事实表如FactTable1(PKey,FactTable.PKey,ErrorCounter)FactTable2(PKey,FactTable.PKey,EventCounter)问题是,我应该将FactTable1或FactTable2更改为这样的结构:FactTable1(PKey,FactTable.PKey,FactTable.FKey1,FactTable.FKey2,FactTable.FKey3,FactTable.FKey4,ErrorCounter)你怎么能有4个事实表与另一个事实有多对一的关系?根据定义,事实表是由公共维度关联的。除非在非常有限的情况下,你不会在另一个事实表上放置事实键。实际上,当你尝试实现多对多场景时,这是非常常见的。假设主事实表是FactConversation,您可能有FactActivity(以及相应的dim表DimActivity)。在一个对话中,您可以有多个活动。现在,您想知道每个活动的对话计数或对话平均持续时间。您必须在DimActivity和FactConversation之间实现多对多在我的多维数据集模型中,所有事实都将与所有dim有规则关系。因此,在我当前的关系数据库模式中,我创建了一个为每个相关事实表创建一个视图,并连接主表以获取这些外键。我在SSAS DSV中直接绑定这些视图。我关心的是性能,包括多维数据集进程和ETL。在ETL期间将所有这些键放入所有相关表中是否明智。我做了一些简单的测试,结果显示差异不大。