留存分析中DAX计算结果不准确的问题排查与解决请求
解决PowerBI中DAX季度离职数计算不一致的问题
问题根源分析
你遇到的不一致问题主要来自两个核心逻辑错误:
- 期末员工数的入职日期条件错误:当前
Ending Head Count中用HireDate <= FIRSTDATE(MyDateTable[Date]),这会漏掉季度内入职且期末仍在职的员工,导致期末员工数计算偏小。 - 错误用期末-期初推导离职数:员工数量的变化逻辑是
期末在职 = 期初在职 + 当期入职 - 当期离职,直接用期末-期初得到的是当期入职 - 当期离职,而非单纯的离职数,这必然和EXITS度量值结果不符。
修正方案
1. 修正期末员工数度量值
将入职日期条件改为<= LASTDATE(MyDateTable[Date]),同时统一未离职员工的判断(包含你用DATE(2049,1,1)标记的未离职情况):
Ending Head Count = CALCULATE( [AllStaffCount], FILTER( BelongingFactTable, BelongingFactTable[HireDate] <= LASTDATE(MyDateTable[Date]) && ( BelongingFactTable[ExitClean] = BLANK() || BelongingFactTable[ExitClean] >= LASTDATE(MyDateTable[Date]) || BelongingFactTable[ExitClean] = DATE(2049,1,1) ) ) )
2. 添加当期入职数度量值
要正确推导离职数,需要先计算季度内新入职的员工:
New Hires = CALCULATE( [AllStaffCount], FILTER( BelongingFactTable, BelongingFactTable[HireDate] >= FIRSTDATE(MyDateTable[Date]) && BelongingFactTable[HireDate] <= LASTDATE(MyDateTable[Date]) ) )
3. 推导正确的离职数
通过员工数量变化公式计算离职数,这个结果应该和EXITS完全对齐:
Calculated Exits = [Starting Head Count] + [New Hires] - [Ending Head Count]
4. 验证AllStaffCount的准确性
确保[AllStaffCount]是基于员工唯一ID的去重计数,比如:
AllStaffCount = DISTINCTCOUNT(BelongingFactTable[EmployeeID])
避免因重复记录导致计数错误。
额外检查点
确认ExitClean字段的DATE(2049,1,1)标记逻辑是否统一:所有未离职员工的ExitClean要么为空,要么设为这个未来日期,避免两种标记方式导致的逻辑遗漏。
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

