我有一张桌子:
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我的想法是创建两个列来计数唯一的is,然后创建一个度量来计算%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”列的单个值。当度量公式引用包含多个值的列而不指定聚合(如min、max、count或sum )以获得单个结果时,就会发生这种情况。
你知道我为什么会收到这条错误信息吗?
如果您有更好的解决方案来获得100%Passed和100% Passed Flag,请告诉我(是/否)。
提前谢谢。
发布于 2020-05-13 03:49:40
这里有几件事出了问题。首先,您所得到的错误表明您试图创建一个度量,而不是一个计算的列。第二,您的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" } )
)(注意:我使用克帕皮尔特来添加过滤器上下文,而不是完全替换它。)
那么编写100%Passed标志度量就很容易了:
100%Passed =
IF ( NOT ISBLANK ( [Passed%] ), IF ( [Passed%] = 1, "Yes", "No" ) )既然我们已经将Technology过滤器添加到度量中,那么即使没有使用切片器,表也应该看起来像我们期望的那样:

https://stackoverflow.com/questions/61764266
复制相似问题