按组划分的 DAX SUM DISTINCT 值

DAX SUM DISTINCT values by groups

我是 PBI/DAX 的新手。 我有一个名为 Opp Recs 的 table,其中包含几列:Group1NumEmpOppRecAcctNum。 如果 Group1 等于 "Corp Employees",我想对 NumEmp 列求和,但仅针对唯一 AcctNum.

我使用了这个公式,但发现 NumEmp 被重复计算为 dup AcctNums**Corp # Emps = CALCULATE(SUM('Opp Recs'[NumEmp]), 'Opp Recs'[Group1] = "Corp Employees")**

我怎样才能正确求和 NumEmp

示例数据:

Group1    NumEmp    OppNum    AcctNum
Corp Employees    450  000030689  A0000123
Corp Employees    450  000030624  A0000123
Corp Employees    150  000030118  A0000662
Small Bus Emp      5  000030637 A0000737
Small Bus Emp      37    000030738  A0000755
Corp Employees    100    000030639   A0000784
Corp Employees    100    000030616   A0000784

编辑: 根据评论中指定的新要求,请使用此版本代码:

S =
CALCULATE (
    SUMX (
        SUMMARIZE ( Corporate, Corporate[NumEmp], Corporate[AcctNum] ),
        Corporate[NumEmp]
    ),
    KEEPFILTERS ( Corporate[Group1] = "Corp Employees" ),
    ALLEXCEPT ( Corporate, Corporate[Group1] )
)

代码根据原需求:

如果您想获得唯一 AcctNum 和 Corp Employees 的所有内容的总计,请使用此

VAR IsUniqueAcct =
    FILTER (
        VALUES ( Corporate[AcctNum] ),
        CALCULATE (
            COUNTROWS ( Corporate ),
            ALLEXCEPT ( Corporate, Corporate[AcctNum] ),
            Corporate[Group1] = "Corp Employees"
        ) = 1
    )
VAR Result =
    CALCULATE ( SUM ( Corporate[NumEmp] ), IsUniqueAcct )
RETURN
    Result

如果你想根据 AcctNum 分离 NumEmp 的总数,那么使用这个:

S = 
VAR IsUniqueAcct =
    FILTER (
        VALUES ( Corporate[AcctNum] ),
        CALCULATE (
            COUNTROWS ( Corporate ),
            ALLEXCEPT ( Corporate, Corporate[AcctNum] ),
            Corporate[Group1] = "Corp Employees"
        ) = 1
    )
VAR Result =
    CALCULATE (
        SUM ( Corporate[NumEmp] ),
        KEEPFILTERS ( IsUniqueAcct ),
        ALLEXCEPT ( Corporate, Corporate[AcctNum] )
    )
RETURN
    Result