人生没有彩排
每一天都是现场直播

如何在PowerBI中计算最大连续工作时长?

在人力资源管理和员工考勤分析中,计算最大连续工作时长是一个常见但具有挑战性的需求。这个指标不仅能帮助企业了解员工的工作模式,还能用于合规性检查、工作效率评估以及异常行为检测。本篇文章将介绍如何在PowerBI中实现这一指标的计算。

问题描述

某工厂在某一天记录了所有员工完成各项任务的用时,为评选优秀员工,现在需要统计每位员工的最大连续工作时长,即合并各任务的可合并工作时间后取最大的那一段时长。

其中,各项任务完成后,允许休息五分钟,并且休息时间算入工作时长。

例如:员工A处理第一个任务的用时为:[13:00, 14:00],处理第二个任务的用时为[14:03, 15:38],那么这两段时间可以合并成[13:00, 15:38],若处理第二个任务时的开始时间为14:05:01及之后,则不能进行合并。

具体问题如下图所示:


本案例的初始数据如下:

任务日志表:

uid task id start end
A 1 2025/1/1 13:00:00 2025/1/1 14:00:00
A 2 2025/1/1 14:03:00 2025/1/1 15:38:00
A 3 2025/1/1 16:00:00 2025/1/1 18:56:00
A 4 2025/1/1 19:01:00 2025/1/1 19:30:00
B 5 2025/1/1 8:10:11 2025/1/1 8:20:00
B 6 2025/1/1 9:00:00 2025/1/1 10:00:00
B 7 2025/1/1 10:04:00 2025/1/1 12:22:00
B 8 2025/1/1 14:00:00 2025/1/1 15:23:00
B 9 2025/1/1 15:27:00 2025/1/1 18:22:00
C 10 2025/1/1 14:00:00 2025/1/1 15:22:30
D 11 2025/1/1 8:00:00 2025/1/1 12:56:00
D 12 2025/1/1 15:00:00 2025/1/1 22:58:00
D 13 2025/1/1 23:02:13 2025/1/2 6:30:03

若需其它辅助表等,可自行创建并建模。

解题要点

首先,需要计算出员工所对应的所有连续工作时间段,然后取时间最长的即可。连续工作时间段的计算思路如下:

1、首先找出所有连续工作时间段的起始时间,只要某个任务的起始时间是连续工作时间段的起始时间,那么在它之前的任务的结束时间加上休息时间不会有大于等于它的。

2、然后找出所有连续工作时间段的结束时间,只要某个任务的结束时间是连续工作时间段的结束时间,那么在它之后的任务的开始时间减去休息时间不会有小于等于它的。


3、对于找出的每一个连续工作时间段的起始时间,再从所有结束时间中找到最接近它的那个结束时间,即可得到一段连续工作时间段的起始与结束时间。

解决方案

首先,数据模型如下图所示:

然后,创建如下度量值:

最大连续工作时长 = 
IF(ISINSCOPE('任务日志表'[uid]),
    VAR StartNode = 
        FILTER(
            VALUES('任务日志表'[start]),
            ISEMPTY(FILTER('任务日志表','任务日志表'[start]<EARLIER('任务日志表'[start]) && '任务日志表'[end]+TIME(0,5,0)>=EARLIER('任务日志表'[start])))
        )
    VAR EndNode = 
        FILTER(
            VALUES('任务日志表'[end]),
            ISEMPTY(FILTER('任务日志表','任务日志表'[end]>EARLIER('任务日志表'[end]) && '任务日志表'[start]-TIME(0,5,0)<=EARLIER('任务日志表'[end])))
        )
    RETURN
    FORMAT(
        MAXX(
            GENERATE(StartNode,TOPN(1,FILTER(EndNode,'任务日志表'[end]>'任务日志表'[start]),'任务日志表'[end],ASC)),
            '任务日志表'[end]-'任务日志表'[start]
        ),
        "hh:nn:ss"
    )
)

然后创建一个矩阵,并将用户ID字段作为行标签,再将上面的度量值放入矩阵的值字段即可,如下图所示:

总结

以上方法仅供参考,若有更优雅的解决方案,欢迎留言讨论,或者加入我们的技术交流群,一起享受这种思维碰撞的快乐吧!

PBI/DAX技术交流群(QQ):344353627

赞(0) 打赏
版权声明:本文为夕枫的原创文章,著作权归作者所有,未经允许不得转载
文章名称:《如何在PowerBI中计算最大连续工作时长?》
文章链接:https://www.ximaple.com/posts/1143.html
订阅评论
提醒
guest
0 评论
最新
最久 最赞
内联反馈
查看所有评论

觉得文章有用的话就支持一下吧~

感谢您的打赏支持,我将持续输出有价值的内容!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册

Operation don't support