PowerPivot关系多对多

时间:2015-06-18 13:50:15

标签: excel powerpivot

我想要实现的目标是在PowerPivot,ClientID和CSQName中有2个切片器。选择ClientID时,只显示与该ClientID相关的CSQ名称,反之亦然

关系图链接: https://goo.gl/photos/PnCZrnsXXTx3oFGh8

我在PowerPivot中链接多对多关系时遇到问题。关于我正在尝试构建的应用程序的简要背景......

我正在尝试将SQL数据库(IDM)和Informix SQL数据库(Cisco Call Data)结合起来。 IDM数据库包括客户数据和TBAS开放案例数据。每个客户都有一个特定的ClientID。思科数据库包括呼叫详细信息和CSQNames(队列名称)。存在多对多关系,例如,clientid可以具有多个CSQname(clientid 3的CSQ名称为" A"以及" B")。另外一个csqname可以有多个clientids(csqname" Z"包括clientids" 99"," 98"" 97"因此我创建了一个innerjoin表创建多对多关系,称为" Clients_CSQ"。

我正在尝试将这个内连接表用于" TBAS Open Cases"和"呼叫详细信息"。当我将此表用于我的过滤器时,PowerPivot声明不存在任何关系。 有没有解决方案?如果这没有意义,请告诉我,我会尽力指定。我已准备好很多帖子,但我无法掌握如何使DAX与计算功能的多对多关系工作。如果有人能够解释我所拥有的问题,我将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:0)

这实际上取决于您要报告的数据。 向PowerPivot表中添加两个切片器时,每个切片器中的可用选择将受到另一个切片器IF中的选择的影响,并且只有在数据透视表的“值”部分中的所有字段都依赖于两者中的条目时才会受到影响。切片器字段。

在您的情况下,可以通过创建3个度量来完成此工作(作为示例):

[Call Total]=SUM('TBAS Open Cases'[Case duration])
[Number of Calls]=COUNTA('Call Detail'[appname])
[Calls by Duration]=SUMX('Clients_CSQ',DIVIDE([Call Total],[Number of Calls]))

将这3个度量中的最后一个放在数据透视表中,切片器设置为使用'Clients_IDM'[ic_client_id]和'CSQ Name'[csqname]和“Hey Presto!”

前两项措施非常简单。第三个是循环遍历这两个切片器字段共有的唯一表中的每个条目(Clients_CSQ),并使用来自FACT表的数据执行计算。我不知道我提出的[呼叫持续时间]度量是否与您的数据集有关,但希望该示例可以帮助您达到您想要的解决方案。再次取决于你想要显示的数据,如果这个度量返回垃圾并不重要,重要的是它将你的两个数据集合在一起。

请记住,只要将任一事实表中的任何原始字段添加到此“统一数据透视表”中,切片程序之间的相互关系就会中断。 !!!但!!!没有什么可以阻止您将csqname切片器链接到同一工作表上的另一个数据透视图,该工作表包含“调用详细信息”表中的字段,同样将ic_client_id切片器链接到包含TBAS Open Cases数据的数据透视表。实际上,“统一数据透视表”可能与切片器位于不同的工作表上,因此您只能看到您感兴趣的两组数据。

忽略关于不存在任何关系的警告!