如何将多个逻辑层应用于一个 Measure 以在 DAX 中创建另一个 Measure

How to apply multiple logical layers to a Measure to create another Measure in DAX

我的数据类似如下:

Type   Compliant   Non Compliant
A      1           0
B      0           1
C      1           0

我有以下措施 returns 合规百分比:

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)))

但到目前为止,我尝试过的公式组合都无法避免可怕的 "single value cannot be determined" 错误。

我知道这在语言中一定是可能的,但我缺少一些元素。如果只有 table 关系支持 BETWEEN 运算符...

与其尝试在一项措施中实施整个 table,一点点建模会大有帮助。

再创建两个 table:

一个,只有类型 -

Type
A
B
C

还有一个符合您的类型 class 乐队 -

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

将您的合规性 table 和 类 table 加入到类型 table 中。

现在您只需要创建两个度量:

CompliancePct:=SUM( Compliance[Compliant] ) / COUNTROWS( Compliance )

CorrectBand := CALCULATE( MAX(Classes[Class])
 , FILTER ( 
      Classes,
      Classes[BandBegin] <= Compliance[CompliancePct]
      && Classes[BandEnd] > Compliance[CompliancePct] 
      ) 
 )