2013-03-11 39 views
4

enter image description here电源支点多对多的关系两个表

之间你可以从图片看,我有这两个表之间的一个一对多的关系模型。但我想让它成为多对多的。我使用AssetID作为这些关系的关键。 关于我如何创建这个的任何想法?

在powerview中使用此功能并将列标题用作滑块时,需要将其作为“多对多”的原因。例如,如果我要在tblOperatingSystem滑块中选择Windows 7,那么我用于tblAssets的滑块只会显示与Windows 7相关的内容,因为我希望能够做相反的事情并在tblAssets中选择silde并且只会出现与tblOperatingSystem滑块相关的操作系统

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

此任何想法?

+1

你不介意与我们分享至少相关的一部分努力 - 只是为了支持[你有什么尝试吗?](http://whathaveyoutried.com/) – 2013-03-11 17:58:19

+0

你可以添加字段吗?从tblOperatingsystem到tblAssets作为计算列,使用类似'= related(tblOperatingsystem [OSID])'的DAX表达式? – dnlbrky 2013-03-13 21:03:35

回答

1

如果我正确地理解了这个问题,这是PowerPivot(和SSAS表格模型)的局限性,它无法正确建模多对多关系。这种关系可以在一个方向上强制执行(如你在操作系统滑动条中看到的那样),但不能在另一个方向上工作。

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

其中的关键部分是在这里也包括您的数据列,使用DAX函数来填充值。然后,您可以使用这个新的非规范化表格作为您的两个滑块的来源(并隐藏来自客户端的原件),当选择一个时,它们将自动过滤对方。现在

Example de-normalised table

,这不是非常有效,因为有很多重复的,因此,如果任何人都可以提出另一种方式来实现这一目标,我很有兴趣听到它自己!只要小心使用这个与真正的大型数据模型,因为它可以减缓很多事情。

或者,我碰到this article来到(其中包含良好的联系,由马可·鲁索和Alberto法拉利类似的帖子),但我还没有尝试过了,所以我不知道它起着如何与PowerView的,因为两篇源文章都是在PV之前。

0

PowerPivot不支持多对多的关系建模,但您可以使用DAX进行模拟。所有你需要做的就是在你的计量表中列出你的计算表​​中相关的多对多表格。例如(从http://gbrueckl.wordpress.com/2012/05/08/resolving-many-to-many-relationships-leveraging-dax-cross-table-filtering/)给予类似的布局:

enter image description here

然后再写对受众表测量计数的行数,但考虑到目标上的信息进行过滤,你可以这样写:

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

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