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

如何用DAX在Power BI中统计在职员工数(处理历史行重复计数问题)

解决DAX统计在职员工数的去重问题

你的员工表存在同一员工多条历史记录的情况(如ID1001因薪资变更有3条记录,其中两条状态为Active,但该员工已于2023年8月3日离职)。直接使用COUNT配合Status='Active'筛选会重复计数,得到错误结果3,而实际正确的在职员工数为2。

以下是针对实时在职场景的DAX解决方案:

方法1:定位最新记录后统计在职人数

在职员工数 = 
VAR 最新记录 = 
    ADDCOLUMNS(
        VALUES('emp'[员工ID]),
        "最新日期", CALCULATE(MAX('emp'[记录日期]))
    )
VAR 当前在职员工 = 
    FILTER(
        'emp',
        ('emp'[员工ID], 'emp'[记录日期]) IN 最新记录 && 'emp'[Status] = "Active"
    )
RETURN
    COUNTROWS(DISTINCT(当前在职员工[员工ID]))

方法2:简化版筛选最新在职员工

在职员工数 = 
DISTINCTCOUNT(
    FILTER(
        'emp',
        'emp'[记录日期] = CALCULATE(MAX('emp'[记录日期]), ALLEXCEPT('emp', 'emp'[员工ID]))
        && 'emp'[Status] = "Active"
    )[员工ID]
)

说明

两种方法核心逻辑一致:先找到每个员工的最新记录,再筛选其中状态为Active的员工,最后统计唯一的员工ID数量。这样既避免了同一员工的重复计数,又确保只统计当前在职的员工(排除像ID1001这类已离职但历史有Active记录的员工)。

如果业务需求是统计所有曾处于Active状态的员工(含已离职),可直接使用:

曾在职员工数 = DISTINCTCOUNT(FILTER('emp', 'emp'[Status] = "Active")[员工ID])

内容的提问来源于stack exchange,提问作者Baktha Singh Babu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 21:08:20