在Power BI中跨多薪资体系动态计算FTE的技术求助
Power BI动态计算FTE(全职等效人数)解决方案
核心问题分析
- 无工时员工的基准工时未被统计:缺少员工-所属薪资周期的完整维度组合,导致岗位层级统计遗漏空记录
- 薪资体系关联错误:全局统计薪资周期数,未按仓库/办公室体系分组,引发重复计算
分步解决方案
1. 优化数据模型
确保以下关联关系:
dim_Employee(员工维度表)包含Employee ID和Payroll System(仓库/办公室)字段fact_Pay通过Employee ID关联dim_Employee,通过Payroll ID关联dim_Payrolldim_Payroll包含Payroll ID、Payroll end(薪资结束日期)、Payroll System字段
2. 生成完整员工-薪资周期维度表
创建计算表,补全每个员工在所属薪资体系下的所有周期记录(哪怕无支付工时):
Employee_Payroll_Cycles = GENERATE( dim_Employee, FILTER( dim_Payroll, dim_Payroll[Payroll System] = dim_Employee[Payroll System] ) )
将此表与fact_Pay通过Employee ID和Payroll ID建立关联,确保空工时记录被纳入统计范围。
3. 编写DAX度量值
按薪资体系分组的FTE
FTE by Payroll System = VAR SelectedSystem = SELECTEDVALUE(dim_Payroll[Payroll System]) VAR PaidHours = CALCULATE( SUM(fact_Pay[Hours Paid]), dim_Payroll[Payroll System] = SelectedSystem, dim_Payroll[Payroll end] IN VALUES('Date'[Date]) // 筛选所选周期内的结束日期 ) VAR SystemCycleCount = CALCULATE( DISTINCTCOUNT(dim_Payroll[Payroll ID]), dim_Payroll[Payroll System] = SelectedSystem, dim_Payroll[Payroll end] IN VALUES('Date'[Date]) ) RETURN DIVIDE(PaidHours, SystemCycleCount * 40, 0) // 40为单周期标准工时
总FTE
Total FTE = SUMX(VALUES(dim_Payroll[Payroll System]), [FTE by Payroll System])
员工层级FTE(含无工时员工)
Employee Level FTE = VAR EmployeeCycleCount = CALCULATE( DISTINCTCOUNT(dim_Payroll[Payroll ID]), dim_Payroll[Payroll System] = SELECTEDVALUE(dim_Employee[Payroll System]), dim_Payroll[Payroll end] IN VALUES('Date'[Date]) ) RETURN DIVIDE(SUM(fact_Pay[Hours Paid]), EmployeeCycleCount * 40, 0)
结果验证
针对你的示例数据:
- 仓库体系:
200 / (2*40) = 2.5FTE - 办公室体系:
80 / (2*40) = 1FTE - 总FTE:
2.5+1=3.5,与预期完全匹配
内容的提问来源于stack exchange,提问作者Tango delta
相关产品推荐
相关产品推荐

