Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 显示基于切片器值的匹配值和非匹配值_Powerbi_Dax_Powerbi Desktop - Fatal编程技术网

Powerbi 显示基于切片器值的匹配值和非匹配值

Powerbi 显示基于切片器值的匹配值和非匹配值,powerbi,dax,powerbi-desktop,Powerbi,Dax,Powerbi Desktop,我正在制作一张收视率表,该表显示哪些客户观看哪些资产。根据资产过滤器,我需要显示观看该节目的客户和未观看该节目的客户。下面是我的示例表 如果在切片器中将资产id选择为1,则所需的输出如下所示 我曾尝试使用asset_id和customer_id创建交叉连接表,但这种方法在处理大数据时需要花费大量时间。请这里的专家提出实现这一目标的最佳解决方案 首先,创建一个新表“资产”: 此表包含唯一的资产,我们将使用它创建影响DAX度量但不影响视觉(表)的切片器。要实现这一点,必须断开资产表与Viewe

我正在制作一张收视率表,该表显示哪些客户观看哪些资产。根据资产过滤器,我需要显示观看该节目的客户和未观看该节目的客户。下面是我的示例表

如果在切片器中将资产id选择为1,则所需的输出如下所示

我曾尝试使用asset_id和customer_id创建交叉连接表,但这种方法在处理大数据时需要花费大量时间。请这里的专家提出实现这一目标的最佳解决方案

首先,创建一个新表“资产”:

此表包含唯一的资产,我们将使用它创建影响DAX度量但不影响视觉(表)的切片器。要实现这一点,必须断开资产表与Viewership表的连接(无关系)

在您的收视率表中,为了保持一致,我刚刚将“资产”重命名为“资产id”:

接下来,创建一个度量:

Status = 
  VAR Selected_Asset = SELECTEDVALUE(Asset[asset_id])
  VAR Customer_Asset = SELECTEDVALUE(Viewership[asset_id])
RETURN
IF(Customer_Asset = Selected_Asset, "Watched", "Not Watched")
结果:

这里的切片器是从“Asset”表创建的,表是一个可视化的表,具有来自Viewership表的customer_id和Asset_id(将它们设置为“don't summary”值)。我关掉了“总数”,假设你不需要它

此设计需要将资产切片器设置为“单一选择”模式,以确保您仅从中获取一个值。如果希望模型与multi-select切片器配合使用,请按如下方式更改DAX度量:

Multi Status = 
  VAR Selected_Assets = ALLSELECTED(Asset[asset_id])
  VAR Customer_Asset = SELECTEDVALUE(Viewership[asset_id])
RETURN
IF(Customer_Asset IN Selected_Assets, "Watched", "Not Watched")
结果:

编辑:

要使其在客户层面发挥作用,请执行以下操作:

Customer Status = 
  VAR Selected_Assets = ALLSELECTED(Asset[asset_id])
  VAR Customer_Assets = VALUES(Viewership[asset_id])
  VAR Assets_Watched = COUNTROWS(INTERSECT(Customer_Assets, Selected_Assets))
RETURN
IF(Assets_Watched > 0, "Watched", "Not Watched")
结果:


说明:将所选资产存储在表变量中。然后,将每个客户可见的资产存储在另一个表变量中。找到两个表的交集(它们的共同点),并计算交集行数。如果没有-未观看,否则观看。如果需要,您可以实际显示观看的电影数量(只需返回“Assets\u wasted”而不是If语句)

谢谢拉多。我试过了,效果很好。我可以请你帮个忙吗。如果客户至少观察一项资产,则在客户级别查看数据时,其状态应为“已观察”。在这个输出中,customer_id 1同时具有“Watched”和“notwatched”,因此在customer级别,他的状态将是“Watched”。我试图通过在创建的度量值上使用MAX来实现这一点。但它不起作用。谢谢@RADO。它起作用了。我可以再要求一个帮助吗。我又创建了一个切片器(资产表的副本),用于未监视的资产。我用第二个资产id切片器创建了相同的客户状态度量,并将其命名为客户状态2。我只从customer_status中过滤出了“Watched”,从customer_status中过滤出了“Not Watched”。现在,当我在第一个切片器中选择asset_id=1,在第二个切片器中选择asset_id=2时,我将在输出中看到customer_id 4(他只查看了asset_id 1)。当我从两个切片器中选择值时,这是有效的。如果仅从第一个切片器中选择值,则输出表将变为空白。如果我在,请告诉我clear@bmsqldev-你的最后一个要求很难理解。如果你能清楚地解释想要的结果,那么如果你把它作为一个新问题发布,你会得到更好的帮助。一旦我更好地了解您的需求,我会尽力帮助您。您能帮助我实现以下目标吗。我需要客户数量,而不是客户名单。我试过一些方法,但不起作用。我将补充一个新问题。