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个月图表
- 插入折线图/柱形图,将日期表的
月份标签拖到X轴,月度活跃员工数拖到Y轴。 - 若要仅显示最近12个月数据:
- 在可视化面板的「筛选器」中,选择日期表的
Date字段 - 设置筛选条件为「相对日期」→「过去12个月」
- 在可视化面板的「筛选器」中,选择日期表的
关键注意事项
- 若有未离职员工,确保日期表的结束日期设为
TODAY(),避免遗漏当前在职人员。 - 确认员工表与日期表无直接关系(度量值已通过DAX关联数据,无需手动建立关系)。
内容的提问来源于stack exchange,提问作者Sourdough
相关产品推荐
相关产品推荐

