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

PowerBI滚动12个月员工人数图表制作技术求助

实现滚动12个月员工人数统计(Power BI)

针对你的需求,以下是一步步的实现方案,适合熟悉Excel但刚接触DAX的用户:


1. 先创建独立日期表(核心前提)

Power BI的时间统计依赖独立的日期表,不能直接用员工表中的日期列。用DAX创建日期表:

日期表 = 
CALENDAR(
    MIN('员工表'[Start Date]),  -- 取员工最早入职日期
    MAX('员工表'[End Date])    -- 取员工最晚离职日期(若有未离职员工,可改为TODAY())
)

再添加用于分组展示的月份列:

月份标签 = FORMAT('日期表'[Date], "MMM YY")  -- 生成类似"Sep 24"的格式

最后在建模选项卡中,将该表标记为「日期表」。


2. 创建月度活跃员工数度量值

根据你的计算逻辑,这里提供两种写法(推荐第二种,更符合DAX最佳实践):

写法1:完全匹配你的计算逻辑

月度活跃员工数 = 
VAR 当前月末 = EOMONTH(SELECTEDVALUE('日期表'[Date]), 0)
VAR 总员工数 = DISTINCTCOUNT('员工表'[Staff ID])
VAR 已提前离职人数 = CALCULATE(DISTINCTCOUNT('员工表'[Staff ID]), '员工表'[End Date] < 当前月末)
VAR 当月及之后入职人数 = CALCULATE(DISTINCTCOUNT('员工表'[Staff ID]), '员工表'[Start Date] > 当前月末)
RETURN
总员工数 - 已提前离职人数 - 当月及之后入职人数

写法2:直接统计活跃员工(更高效)

月度活跃员工数 = 
VAR 当前月末 = EOMONTH(SELECTEDVALUE('日期表'[Date]), 0)
RETURN
CALCULATE(
    DISTINCTCOUNT('员工表'[Staff ID]),
    '员工表'[Start Date] <= 当前月末,  -- 入职时间不晚于当月末
    OR('员工表'[End Date] >= 当前月末, ISBLANK('员工表'[End Date]))  -- 未离职或离职时间不早于当月末
)

注:用DISTINCTCOUNT避免重复统计同一员工的多条记录


3. 制作滚动12个月图表

  1. 插入折线图/柱形图,将日期表的月份标签拖到X轴,月度活跃员工数拖到Y轴。
  2. 若要仅显示最近12个月数据:
    • 在可视化面板的「筛选器」中,选择日期表的Date字段
    • 设置筛选条件为「相对日期」→「过去12个月」

关键注意事项

  • 若有未离职员工,确保日期表的结束日期设为TODAY(),避免遗漏当前在职人员。
  • 确认员工表与日期表无直接关系(度量值已通过DAX关联数据,无需手动建立关系)。

内容的提问来源于stack exchange,提问作者Sourdough

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 12:33:31