PowerPivot中按月计算员工FTE在职人数的技术问题
PowerPivot按月计算在职员工总FTE解决方案
1. 修正数据模型
- 取消
Master Worker表与Calendar表(DimDate)之间的现有关联(基于Hire Date的关联),这种单一日期关联会限制筛选范围,仅统计当月入职的员工,这正是你当前得到错误结果的核心原因。
2. 创建正确的DAX度量值
使用以下度量值计算每月在职员工的FTE总和,替代你原有的计数度量:
Total FTE := VAR CurrentMonthDate = MAX('DimDate'[Date]) RETURN CALCULATE( SUM('Master Worker'[FTE]), FILTER( ALL('Master Worker'), 'Master Worker'[Start Date USE] <= CurrentMonthDate && (ISBLANK('Master Worker'[Termination Date USE]) || 'Master Worker'[Termination Date USE] >= CurrentMonthDate) ) )
关键说明:
ALL('Master Worker'):清除可能存在的筛选器影响,确保所有员工都被纳入计算范围- 新增
ISBLANK判断:覆盖在职员工(无离职日期)的场景 - 用
SUM('Master Worker'[FTE])替代COUNTROWS,实现FTE数值的累加而非单纯计数
3. 使用度量值生成目标表格
- 将
DimDate表的Date字段(或专门的Month Start Date字段)拖到表格的行区域 - 将
Total FTE度量值拖到值区域 - 如需按年月筛选,直接使用
DimDate表的Year、Month字段作为切片器即可得到你需要的格式
4. 备用方案:生成预计算表(性能优化)
若数据量较大导致度量值性能不佳,可创建计算表预先计算每月FTE:
Monthly FTE Summary = SUMMARIZE( 'DimDate', 'DimDate'[Year], 'DimDate'[Month Number], 'DimDate'[Date], "Total FTE", VAR CurrentMonthDate = 'DimDate'[Date] RETURN CALCULATE( SUM('Master Worker'[FTE]), FILTER( 'Master Worker', 'Master Worker'[Start Date USE] <= CurrentMonthDate && (ISBLANK('Master Worker'[Termination Date USE]) || 'Master Worker'[Termination Date USE] >= CurrentMonthDate) ) ) )
创建完成后,直接使用该计算表即可生成目标格式的报表。
内容的提问来源于stack exchange,提问作者kcoco
相关产品推荐
相关产品推荐

