如何在DAX公式度量中添加if语句?

时间:2018-09-06 08:33:57

标签: excel powerbi dax powerpivot

我是DAX的新手,它创建了两种方法来获取每个员工的总薪资,然后将总薪资查询到表中并在Power Pivot中返回一个值。

总薪酬标准:

NMRPaySum:=SUMX(Pay,[Regular Pay]+[Overtime Pay]+[Other Pay])

范围查询指标:

SSSContributionEE :=
CALCULATE (
    VALUES ( SSSContribution[EE] ),
    FILTER (
        SSSContribution,
        [NMRPaySum] >= SSSContribution[Lower Bound] &&
        [NMRPaySum] <= SSSContribution[Upper Bound]
    )
)

但是,我需要范围查找来仅计算是否满足员工类型。

其逻辑如下:

If Employee[Type]="Regular" Then
    Calculate SSSConbtributionEE
Else
    0
End If

我已经尝试过这个DAX公式,但是似乎没有用:

=
IF (
    OR ( Salary[Type] = "Regular", Salary[Type] = "Agency" ),
    CALCULATE (
        VALUES ( SSSContribution[EE] ),
        FILTER (
            SSSContribution,
            [NMRPaySum] >= SSSContribution[Lower Bound] &&
            [NMRPaySum] <= SSSContribution[Upper Bound]
        )
    ),
    0
)

NMRPay表: enter image description here

SSS贡献表:

enter image description here

员工信息表:

enter image description here

2 个答案:

答案 0 :(得分:0)

对所有数据按原样使用度量。然后,您构建数据透视表,在其中可以对Employee Type使用过滤器或切片器以排除不需要的值。将度量添加到“值”区域,它将仅针对数据透视表的行和列中的数据进行计算。

答案 1 :(得分:0)

对于OR条件,您应该可以将其添加为另一个过滤器:

=  CALCULATE (
        VALUES ( SSSContribution[EE] ),
        FILTER (
            SSSContribution,
            [NMRPaySum] >= SSSContribution[Lower Bound] &&
            [NMRPaySum] <= SSSContribution[Upper Bound]
        ),
        FILTER (Salary, Salary[Type] = "Regular" || SalaryType = "Agency")
)

根据您的确切数据模型/关系结构,这可能会或可能不会起作用,但它可能会为您指明正确的方向。您可能需要使用RELATED / RELATEDTABLE,但是我不确定自己不能玩它。