如何按15分钟时段统计在岗员工总数并生成柱状图?
解决15分钟窗口在岗员工数统计问题
核心问题分析
你用的SUMEMPCNT=SUM('data'[EMPCNT])只是对当前时段的打卡记录做数值求和,但在岗人数需要统计所有在岗区间覆盖当前15分钟窗口的员工数量,而非该时段的打卡人次或记录数。
具体解决方案(以Power BI为例)
假设你已具备:
- 基础数据表
data:包含员工ID、打卡开始时间Start_Time、打卡结束时间End_Time - 15分钟增量时间表
Time_Windows:包含每个15分钟窗口的起始时间(如Window_Start,格式示例:2024-05-20 09:00:00、2024-05-20 09:15:00)
1. 创建正确的在岗人数度量值
替换原有SUM度量值,使用DAX实现时间范围匹配+去重计数:
在岗员工总数 = CALCULATE( DISTINCTCOUNT('data'[员工ID]), FILTER( ALL('data'), 'data'[Start_Time] <= MAX('Time_Windows'[Window_Start]) && 'data'[End_Time] >= MIN('Time_Windows'[Window_Start]) ) )
- 逻辑说明:遍历所有员工打卡记录,判断其在岗区间是否与当前15分钟窗口重叠(开始时间不晚于窗口结束、结束时间不早于窗口开始),最后去重统计符合条件的员工ID数量。
2. 调整图表配置
- 将
Time_Windows中的Window_Start拖至柱状图X轴 - 将新创建的
在岗员工总数度量值拖至Y轴 - 确保X轴按时间顺序排序,格式设置为15分钟间隔的时间格式
3. 优化补充
- 若
Time_Windows包含窗口结束时间Window_End,可将判断条件改为'data'[Start_Time] <= 'Time_Windows'[Window_End] && 'data'[End_Time] >= 'Time_Windows'[Window_Start],更精准匹配窗口区间 - 若存在员工多次打卡的情况,
DISTINCTCOUNT会自动去重,确保同一员工在同一窗口仅被计数一次
内容的提问来源于stack exchange,提问作者ZRaptor
相关产品推荐
相关产品推荐

