按组划分的 DAX SUM DISTINCT 值
DAX SUM DISTINCT values by groups
我是 PBI/DAX 的新手。
我有一个名为 Opp Recs 的 table,其中包含几列:Group1
、NumEmp
、OppRec
、AcctNum
。
如果 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
我是 PBI/DAX 的新手。
我有一个名为 Opp Recs 的 table,其中包含几列:Group1
、NumEmp
、OppRec
、AcctNum
。
如果 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