【问题标题】:Variance between row values in same table based on selected filter values - Power BI基于所选筛选值的同一表中的行值之间的差异 - Power BI
【发布时间】:2021-03-23 05:07:42
【问题描述】:

我正在尝试根据多个过滤器值返回行之间的方差值。

数据集如下所示:

Bid Name Service Area Task Name Resource Hours Revenue
Bid 1 SA1 Fix the lights R1 75 100
Bid 2 SA1 Fix the lights R1 100 175

我正在寻找的是这样的:

Slicer 1
Bid 1 (selected)
Bid 2
Slicer 2
Bid 1
Bid 2 (selected)
Service Area Task Name Resource Hours Revenue
SA1 Fix the lights R1 25 75

我已经使用计算尝试了很多变化,所有选择并尝试复制表并在表 1 上使用一个切片器,在表 2 上使用另一个切片器。 一些细微差别:

  1. 我需要该表仅返回存在差异的行
  2. 如果在两个切片器中选择了相同的出价,则值不应返回任何值(因为不应有差异

如果没有切片器有更好的方法可以做到这一点,我可以不用。

非常感谢任何帮助。

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    您需要为每个切片器创建一个单独的表,并且这些切片器表都不应与您的数据表或彼此相关。

    即两个计算表

    Slicer1 = VALUES ( Data[Bid Name] )
    Slicer2 = VALUES ( Data[Bid Name] )
    

    然后您编写一个读取切片器并计算差异的度量(如果差异为零,则返回空白)。

    HourDiff =
    VAR Bid1 = SELECTEDVALUE ( Slicer1[Bid Name] )
    VAR Bid2 = SELECTEDVALUE ( Slicer2[Bid Name] )
    VAR Hours1 = CALCULATE ( SUM ( Data[Hours] ), Data[Bid Name] = Bid1 )
    VAR Hours2 = CALCULATE ( SUM ( Data[Hours] ), Data[Bid Name] = Bid2 )
    RETURN
        IF (
            ISBLANK ( Hours1 ) || ISBLANK ( Hours2 ) || Hours1 = Hours2,
            BLANK(),
            Hours2 - Hours1
        )
    

    RevenueDiff 的度量是类似的。

    【讨论】:

    • 谢谢@Alexis。这对我有用。一个问题,如果我想拥有一个更高级别的过滤器,比如我希望能够应用于页面的客户端,我将如何做到这一点,因为表必须是不相关的。因此,基本上我希望一次在切片器中为给定客户提供所有出价。每个客户大约有 20 个出价,大约有 4,000 多个客户,因此在切片器中一次填充所有出价是相当多的滚动浏览。
    • 您可以根据需要保留现有的相关表进行过滤。
    • 那会怎样?所以我有一个基础表,我现在已经复制它来创建两个不相关的表。如果我使用过滤器中一个表中的客户端,它实际上不会过滤这些值,因为 Power BI 无法知道它们是相关的。
    • 我建议的新切片器表没有client;它们是单列,Bid Name。在创建两个新表之前,您会保持原位,但您会在 client 上切片。
    • 缺乏关系意味着竞价切片器不会自动交叉过滤以响应client 选择。不过这个can be remedied。
    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-09
    • 1970-01-01
    相关资源
    最近更新 更多