我有这张表:
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], "" )
此公式在此示例中有效,但当我将其应用于我的工作数据时,我收到此错误消息:
A single value for column ‘IP’ in the table ‘Table’ cannot be determined. This can happen when a measure formula refers to a column that contains many values without specifying an aggregation such a min, max, count, or sum to get a single result
你知道我为什么收到此错误消息吗?
如果您有更好的解决方案来获取100%通过
和100%通过标志
(是/否),请告诉我。
提前致谢。
最佳答案
这里有一些问题。首先,您收到的错误表明您正在尝试创建度量而不是计算列。其次,您的 IP
列不是数字,因此除法无论如何都不起作用。
我假设您实际上正在尝试制定一种进入可视化列而不是计算列的度量。
使用切片器和计算行数和列上的状态
的度量:
您可以按如下方式计算通过百分比(仅包括特定技术):
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
过滤器添加到度量中,因此即使不使用切片器,表格也应如我们所期望的那样:
关于powerbi - Power bi 计算比率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61764266/