我的数据类似于以下内容:
Type Compliant Non Compliant
A 1 0
B 0 1
C 1 0
我有以下措施可以返回合规百分比:
sum(Table[Compliance])/(sum(Table[Compliance])+sum(Table[NonCompliant]))
这样的东西:
Type Compliance %
A 74.45
B 53.36
C 29.88
到目前为止很棒,但现在我想按%范围和类型对百分比进行分类:
Type Compliance % Class
A 74.45 5
B 53.36 3
C 29.88 1
目前,我对每种类型都有一个度量,因为每个百分比的阈值不同:
Type A Category= CALCULATE(
SWITCH (
TRUE (),
[MeasureCompliancePCT] <= 0.25, 1,
[MeasureCompliancePCT] <= 0.50, 2,
[MeasureCompliancePCT] <= 0.61, 3,
[MeasureCompliancePCT] <= 0.80, 4,
5),Table[Type]="A"
)
虽然这有效,但这些调整后的措施难以使用,所以我尝试进行嵌套的SWITCH计算:
Class= CALCULATE(SUM(
SWITCH (
TRUE (),
[MeasureCompliancePCT] <= SWITCH(TRUE(), Table[Type]="A", -1,
Table[Type]="B", -1),0,
[MeasureCompliancePCT] <= SWITCH(TRUE(), Table[Type]="A", 0.25,
Table[Type]="B", 0.49),1,
[MeasureCompliancePCT] <= SWITCH(TRUE(), Table[Type]="A", 0.50,
Table[Type]="B", 0.66),2,
[MeasureCompliancePCT] <= SWITCH(TRUE(), Table[Type]="A", 0.61,
Table[Type]="B", 0.78),3,
[MeasureCompliancePCT] <= SWITCH(TRUE(), Table[Type]="A", 0.80,
Table[Type]="B", 0.86),4,
5)))
但到目前为止,我尝试过的公式组合都没有避免可怕的“单一值无法确定”错误。
我知道在语言中这一定是可能的,但是我缺少一些元素。如果只有表关系支持BETWEEN运算符......
答案 0 :(得分:2)
不是尝试在度量中实现整个表,而是进行一些建模将会有很长的路要走。
再创建两个表:
一个,只有类型 -
Type
A
B
C
还有一个类型类乐队 -
Type BandBegin BandEnd Class
A -1 0.25 1
A 0.25 0.5 2
A 0.5 0.61 3
A 0.61 0.8 4
A 0.8 10 5
B -1 0.49 1
B 0.49 0.66 2
B 0.66 0.78 3
B 0.78 0.86 4
B 0.86 10 5
将Compliance表和Classes表连接到Type上的Types表。
现在你只需要创建两个措施:
CompliancePct:=SUM( Compliance[Compliant] ) / COUNTROWS( Compliance )
CorrectBand := CALCULATE( MAX(Classes[Class])
, FILTER (
Classes,
Classes[BandBegin] <= Compliance[CompliancePct]
&& Classes[BandEnd] > Compliance[CompliancePct]
)
)