PowerBI中按多周期计算可用时长及利用率的技术咨询
PowerBI员工利用率计算解决方案
核心思路
基于筛选上下文(日/周/月/季/年),先计算员工在该周期内的实际总工时,判断全职/兼职身份后,结合周期内工作日总数算出总可用时长,最终用实际工时除以可用时长得到利用率。
所需前提
确保已建立包含IsWorkDay(标记是否为工作日,5天工作制即周一至周五设为True)列的日历表(命名为Calendar),且日历表与MATCHED_JOBID表通过Actual_Start字段建立关系。
分步实现度量值
1. 实际工作时长(分钟)
计算筛选范围内有效工作记录的总分钟数:
实际工作时长_分钟 = SUMX( FILTER( MATCHED_JOBID, MATCHED_JOBID[ACTUAL_END] > MATCHED_JOBID[ACTUAL_START] ), DATEDIFF( MATCHED_JOBID[ACTUAL_START], MATCHED_JOBID[ACTUAL_END], MINUTE ) )
2. 实际工作时长(小时)
将分钟转换为小时,用于判断全职/兼职阈值:
实际工作时长_小时 = DIVIDE([实际工作时长_分钟], 60, 0)
3. 周期内工作日数
计算当前筛选上下文内的工作日总数:
周期工作日数 = CALCULATE( COUNTROWS(Calendar), Calendar[IsWorkDay] = TRUE() )
4. 每日可用时长(小时)
根据周期内实际总工时判断每日可用时长:
每日可用时长_小时 = IF( [实际工作时长_小时] > 30, 8, // 全职每日8小时 6 // 兼职每日6小时 )
5. 总可用时长(分钟)
结合工作日数和每日时长,计算周期总可用分钟数:
总可用时长_分钟 = [周期工作日数] * [每日可用时长_小时] * 60
6. 最终利用率
计算实际工时与可用时长的占比,自动处理除数为0的情况:
利用率 = DIVIDE( [实际工作时长_分钟], [总可用时长_分钟], 0 // 可用时长为0时返回0 )
效果验证
- 日维度:若当日实际工时超30小时(逻辑兼容极端场景),可用时长为480分钟;否则为360分钟。
- 周维度:若周总工时>30小时,可用时长为2400分钟(40小时);否则为1800分钟(30小时),完全匹配需求。
- 月/季/年维度:自动计算对应周期内工作日数,乘以对应每日时长得到总可用时长,再计算利用率。
内容的提问来源于stack exchange,提问作者TFPA
相关产品推荐
相关产品推荐

