我有这张桌子:
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%Passed
和100% Passed Flag
(是/否)。
谢谢。
答案 0 :(得分:2)
这里有些错误。首先,您收到的错误提示您正在尝试创建度量而不是计算列。其次,您的IP
列不是数字,因此该除法还是无法进行。
实际上,我假设您是在尝试进行可视化而不是计算列的度量。
使用切片器和对行和列上的Status
进行计数的度量:
您可以按以下方式计算通过率(仅包括特定技术):
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
过滤器,因此即使不使用切片器,这些表也应该看起来像我们期望的那样: