【问题标题】:Display Matched and Non Matched Values based on a slicer value Power BI根据切片器值 Power BI 显示匹配和不匹配的值
【发布时间】:2019-07-08 15:35:32
【问题描述】:

我正在制作一个查看表,该表告诉哪些客户观看了哪些资产。基于资产过滤器,我需要显示观看节目的客户和未观看节目的客户。下面是我的示例表

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

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

【问题讨论】:

    标签: powerbi dax powerbi-desktop


    【解决方案1】:

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

    此表包含独特的资产,我们将使用它来创建一个影响 DAX 度量但不影响视觉(表)的切片器。为此,必须将 Asset 表与 Viewership 表断开连接(无关系)。

    在您的收视率表中,我只是将“asset”重命名为“asset_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")
    

    结果:

    此处的切片器是从“资产”表创建的,而表是具有来自 Viewership 表的 customer_id 和asset_id 的表视觉对象(将它们设置为“不汇总”值)。我关闭了“total”,假设你不需要它。

    此设计需要将资产切片器设置为“单选”模式,以确保您只能从中获取一个值。如果您希望模型与多选切片器一起使用,请按如下方式更改 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_Watched”而不是 IF 语句)。

    【讨论】:

    • 感谢RADO。我试过了,效果很好。我可以请你帮忙吗?如果客户至少观看了一项资产,则在查看客户级别的数据时,他的状态应为“已观看”。在此输出中,customer_id 1 同时具有“已观看”和“未观看”,因此在客户级别,他的状态将为“已观看”。我试图通过在创建的度量上使用 MAX 来完成此操作..但它不起作用
    • 非常感谢@RADO。它的工作。我可以再请求一个帮助吗?我又创建了一个切片器(资产表的副本),用于未观看的资产。我用第二个asset_id切片器创建了相同的customer_status度量,并将其命名为customer_status_2。我仅从 customer_status 中过滤掉了“已观看”,从 customer_status_2 中过滤掉了“未观看”。现在,当我在第一个切片器中选择asset_id = 1 并在第二个切片器中选择asset_id = 2 时,我将在输出中看到customer_id 4(谁只看过资产_id 1)。
    • 这在我从两个切片器中选择值时起作用。如果我仅从第一个切片器中选择值,则输出表将变为空白。请让我知道是否清楚
    • @bmsqldev - 你的最后一个要求很难理解。如果您将其作为新问题发布,您可以获得更好的帮助,您可以清楚地解释所需的结果。一旦我更好地了解您的需求,我会尽力提供帮助。
    • 您能帮我实现以下目标吗?我需要客户数量而不是客户列表。我尝试了一些方法它不起作用。我将添加一个新问题。
    猜你喜欢
    • 2021-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-02
    相关资源
    最近更新 更多