4

在此处输入图像描述

正如您从图像中看到的那样,我在这两个表之间存在一对多的关系。但我想让它成为多对多的。我使用 AssetID 作为这些关系的关键。关于我如何创建这个的任何想法?

之所以需要它作为多对多,就像我在 powerview 中使用它并使用列标题作为滑块一样。这方面的一个例子是,如果我要在 tblOperatingSystem 滑块中选择 Windows 7,我用于 tblAssets 的滑块只会显示与 Windows 7 相关的内容,而我希望能够做相反的事情并在 tblAssets silder 中选择并且只会出现与 tblOperatingSystem 滑块相关的操作系统

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

有什么想法吗?

4

2 回答 2

1

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

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

对此的关键部分是在此处也包含您的数据列,使用 DAX 函数来填充值。You can then use this new de-normalised table as the source for both of your sliders (and hide the originals from the client), which will automatically filter each other when one is selected.

非规范化表示例

现在,它的效率不是很高,因为有很多重复,所以如果其他人可以提出另一种方法来实现这一点,我很想亲自听听!请注意不要将其与非常大的数据模型一起使用,因为它会大大降低速度。

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

于 2013-03-12T16:07:48.497 回答
0

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

在此处输入图像描述

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

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

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

于 2013-12-02T17:15:37.153 回答