You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

留存分析中DAX计算结果不准确的问题排查与解决请求

解决PowerBI中DAX季度离职数计算不一致的问题

问题根源分析

你遇到的不一致问题主要来自两个核心逻辑错误:

  1. 期末员工数的入职日期条件错误:当前Ending Head Count中用HireDate <= FIRSTDATE(MyDateTable[Date]),这会漏掉季度内入职且期末仍在职的员工,导致期末员工数计算偏小。
  2. 错误用期末-期初推导离职数:员工数量的变化逻辑是期末在职 = 期初在职 + 当期入职 - 当期离职,直接用期末-期初得到的是当期入职 - 当期离职,而非单纯的离职数,这必然和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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 17:43:18