DAX员工统计度量问题:跨部门员工年度统计出现缺口求解决方案
解决年度维度下员工任职统计缺口问题
问题根源
原度量公式要求单个部门的任职时间段完全覆盖当前统计周期(即部门入职日期≤周期最早日期,且部门离职日期≥周期最晚日期)。对于年度维度,员工2在2021年更换部门,两段任职都无法覆盖全年,因此被排除,导致统计值为0。我们需要的逻辑是:只要员工在统计年度内有任何一天处于在职状态,就应被计入统计,而非要求某段任职覆盖整个年度。
解决方案
修改度量的筛选条件,判断员工的任意一段任职时间段是否与当前统计周期存在交集,再对满足条件的员工去重计数。
修正后的DAX度量
Employees = CALCULATE( DISTINCTCOUNT(EMP[EMP_ID]), EMP[Dep_Start_Date] <= MAX(CAL[Date]) && EMP[Dep_End_Date] >= MIN(CAL[Date]) )
逻辑说明
MAX(CAL[Date]):获取当前统计周期的最后一天(年度维度下为当年12月31日)MIN(CAL[Date]):获取当前统计周期的第一天(年度维度下为当年1月1日)- 筛选条件
EMP[Dep_Start_Date] <= MAX(CAL[Date]) && EMP[Dep_End_Date] >= MIN(CAL[Date]):确保员工的某段任职与当前周期有重叠(即年内至少有一天在职) DISTINCTCOUNT(EMP[EMP_ID]):对满足条件的员工去重,避免同一员工因多个部门记录被重复统计
验证结果
修正后年度统计结果会变为:
| EMP_ID | 2019 | 2020 | 2021 | 2022 | 2023 |
|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 1 | 1 | 1 | 1 | 1 |
| 3 | 0 | 0 | 0 | 1 | 1 |
内容的提问来源于stack exchange,提问作者Steven
相关产品推荐
相关产品推荐

