Power支持两个表之间的多对多关系

时间:2013-03-11 16:36:37

标签: excel relationship powerpivot

enter image description here

从图像中可以看出,我在这两个表之间有一对多的关系。但我想让它成为一个多对多的东西。我使用AssetID作为这些关系的关键。 关于如何创造这个的任何想法??

因为我在powerview中使用它并使用列标题作为滑块,因此需要它作为多对多的原因。这样做的一个例子是,如果我要在tblOperatingSystem滑块中选择Windows 7,我用于tblAssets的滑块只会显示与Windows 7相关的内容,因为我希望能够执行相反的操作并选择tblAssets silder并且只显示与tblOperatingSystem滑块相关的操作系统

我已经尝试创建一个只有AssetID的新表,然后将tblAssets和tblOperatingSystem连接到它,但这种方法不适用于滑块。

围绕这个想法?

2 个答案:

答案 0 :(得分:1)

如果我正确理解了这个问题,那就归结为PowerPivot(以及SSAS表格模型)的限制,在该限制中它无法正确建模多对多关系。这种关系可以在一个方向上强制执行(正如您在操作系统滑块中看到的那样),但在另一个方向上不起作用。

我过去设法在PowerPivot / PowerView中解决此问题的方法是创建一个额外的,非规范化的表,其中包含操作系统和资产的所有可能组合,以及新的标识列(或串联) OSIDAssetID)作为密钥。根据需要将一对多关系配置为tblOperatingSystemtblAsset

关键部分是在此处包含您的数据列,使用DAX函数填充值。然后,您可以使用这个新的非规范化表作为两个滑块的源(并隐藏客户端的原件),当选择一个时,它将自动相互过滤。

Example de-normalised table

现在,它并不是非常有效,因为有很多重复,所以如果其他人可以提出另一种方法来实现这一点,我会有兴趣自己听!请注意将其用于非常大的数据模型,因为它可以减慢很多事情。

或者,我遇到了this article(其中包含了Marco Russo和Alberto Ferrari的类似帖子的良好链接),但我还没有尝试过,所以我不确定它与PowerView的效果如何,因为这两篇文章都与PV相同。

答案 1 :(得分:0)

PowerPivot不支持多对多关系建模,但您可以使用DAX模拟它。您需要做的就是在计量列表中计算您的计算参数中的相关多对多表。例如(来自http://gbrueckl.wordpress.com/2012/05/08/resolving-many-to-many-relationships-leveraging-dax-cross-table-filtering/)给出如下布局:

enter image description here

然后在Audience表上编写一个计量行数的度量,但考虑到你要编写的Targets表上的过滤:

RowCount_M2M:=CALCULATE(
     [RowCount], 
     'Individuals', 
     'TargetsForIndividuals', 
     'Targets')

通过列出其他表格,他们的过滤器上下文将重叠,您将获得正在寻找的加入。