Power bi计算比率

时间:2020-05-13 00:22:55

标签: powerbi dax

我有这张桌子:

Group   IP  Technology  Status
G1  IP1 T1  Passed
G1  IP1 T1  Passed
G1  IP1 T1  Failed
G1  IP1 T2  Failed
G1  IP1 T2  Failed
G1  IP1 T2  Passed
G1  IP2 T3  Passed
G1  IP2 T3  Failed
G2  IP3 T4  Passed
G2  IP3 T4  Passed
G2  IP3 T5  Passed
G2  IP3 T5  Passed
G2  IP4 T5  Passed
G2  IP4 T5  Passed
G2  IP4 T5  Passed
G2  IP2 T6  Passed
G2  IP2 T6  Passed
G2  IP2 T6  Passed
G2  IP2 T6  Passed

我必须排除某些技术(T2和T6)并计算以下内容:

100%Passed =
(# unique IPs that have 100% passed) /
    (total # unique IPs I need to be able to cut it in different ways)

我将失败的列留作参考

IP结果:

IP  Failed  Passed  Passed flag
IP1 33% 67%     No
IP2 50% 50%     No
IP3 0%  100%    Yes
IP4 0%  100%    Yes

技术成果:

Technology  Failed  Passed  Passed flag
T1  33% 67%     No
T3  50% 50%     No
T4  0%  100%    Yes
T5  0%  100%    Yes

技术成果:

Group   Failed  Passed  Passed flag
G1  40% 60%     No
G2  0%  100%    Yes

我的想法是创建两列来计算唯一IP,然后创建一种度量来计算%Passed

我创建了以下列:

Numerator =
IF (
    AND (
        'Table'[Status] = "Passed",
        'Table'[Technology] IN { "T1", "T3", "T4", "T5" }
    ),
    'Table'[IP],
    ""
)
Denominator =
IF ( 'Table'[Technology] IN { "T1", "T3", "T4", "T5" }, 'Table'[IP], "" )

此公式在此示例中有效,但是当我将其应用于工作数据时,会收到以下错误消息:

无法确定表“表”中“ IP”列的单个值。当度量公式引用包含许多值的列而未指定诸如最小值,最大值,计数或总和之类的聚合以获得单个结果时,会发生这种情况

您知道我为什么收到此错误消息吗?

请告诉我您是否有更好的解决方案来获得100%Passed100% Passed Flag(是/否)。

谢谢。

1 个答案:

答案 0 :(得分:2)

这里有些错误。首先,您收到的错误提示您正在尝试创建度量而不是计算列。其次,您的IP列不是数字,因此该除法还是无法进行。

实际上,我假设您是在尝试进行可视化而不是计算列的度量。

使用切片器和对行和列上的Status进行计数的度量:

Matrix Visual

您可以按以下方式计算通过率(仅包括特定技术):

Passed% = 
CALCULATE (
    DIVIDE (
        CALCULATE ( COUNTROWS ( Table1 ), KEEPFILTERS ( Table1[Status] = "Passed" ) ),
        CALCULATE ( COUNTROWS ( Table1 ), ALL ( Table1[Status] ) )
    ),
    KEEPFILTERS ( Table1[Technology] IN { "T1", "T3", "T4", "T5" } )
)

(注意:我正在使用KEEPFILTERS添加到过滤器上下文中,而不是完全替换它。)

编写一个100%Passed标志度量很容易:

100%Passed = 
IF ( NOT ISBLANK ( [Passed%] ), IF ( [Passed%] = 1, "Yes", "No" ) )

由于我们已经向度量添加了Technology过滤器,因此即使不使用切片器,这些表也应该看起来像我们期望的那样:

enter image description here