问题描述
我是 PBI/DAX 的新手。
我有一个名为 Opp Recs 的表,其中包含几列:Group1
、NumEmp
、OppRec
、AcctNum
。
如果 NumEmp
等于 Group1
,但仅针对唯一的 "Corp Employees"
,我想对 AcctNum
列求和。
我使用了这个公式,但意识到 NumEmp
被重复计算为 dup AcctNums
:
**Corp # Emps = CALculaTE(SUM('Opp Recs'[NumEmp]),'Opp Recs'[Group1] = "Corp Employees")**
如何正确求和 NumEmp
?
样本数据:
Group1 | NumEmp | OppNum | AcctNum |
---|---|---|---|
企业员工 | 450 | 000030689 | A0000123 |
企业员工 | 450 | 000030624 | A0000123 |
企业员工 | 150 | 000030118 | A0000662 |
Small Bus Emp | 5 | 000030637 | A0000737 |
Small Bus Emp | 37 | 000030738 | A0000755 |
企业员工 | 100 | 000030639 | A0000784 |
企业员工 | 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 ),Corporate[Group1] = "Corp Employees"
) = 1
)
VAR Result =
CALCULATE ( SUM ( Corporate[NumEmp] ),IsUniqueAcct )
RETURN
Result
如果您想根据 AcctNum 分离 NumEmp 的总数,请使用以下命令:
S =
VAR IsUniqueAcct =
FILTER (
VALUES ( Corporate[AcctNum] ),Corporate[Group1] = "Corp Employees"
) = 1
)
VAR Result =
CALCULATE (
SUM ( Corporate[NumEmp] ),KEEPFILTERS ( IsUniqueAcct ),Corporate[AcctNum] )
)
RETURN
Result