前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PowerBI HR应用之离岗时间计算

PowerBI HR应用之离岗时间计算

作者头像
BI佐罗
发布2019-09-23 19:10:00
1.4K0
发布2019-09-23 19:10:00
举报
文章被收录于专栏:PowerBI战友联盟PowerBI战友联盟

背景

很多企业实行比较人性化的管理,员工进出公司以打卡为安全保证,而很多时候会出现员工离岗很长时间的问题。作为一种了解,企业通过打卡机的记录可以了解到一个员工离开工位的时长。例如:

对于任何一个员工:

  • 每日第一次进入打卡记录为其上班时间;
  • 每日最后一次离开打卡记录为其下班时间;
  • 中间每对【离开-进入】的间隔为离岗时长。

那么打卡机会默认记录所有员工的打卡记录,问题来了,需要统计每个员工的离岗时长,如何操作。

不看不知道,一看吓一跳,离岗时长加起来吓死人:

打卡机的记录

打卡机按照如下格式进行记录:

该记录可以导出为Excel文件,接下来的分析就是基于Excel文件了。

难点分析

按照此前介绍的:PowerBI 企业级建模设计流程框架,我们先要明确关注的业务:

  • 每个人每天的离岗时长(分钟数)
  • 每个人每天的上班时间
  • 每个人每天的下班时间
  • 上班或下班可能存在尾随的情况使得配对不严格成立

尤其是第一项的分析,可以看出在考勤打卡机的记录里,某人某日的第一条记录是上班记录,从第二条开始才是离开记录;而最后一条是下班记录,并非离岗记录。而这里需要将【离岗-回岗】合理配对以计算离岗时长。

分治法:将原问题化解为有限的原子问题以及原子问题的重复,并先分类解决原子问题,再整体解决原问题。本案例将使用分治法策略来实现。——《算法导论》(忘了第几版了)

考察单日单人的情况

根据业务的描述,在这个案例中,存在一个非常复杂的数据准备过程,准备好的数据应该:

  • 明确标明某人某日的上班时间
  • 明确标明某人某日的下班时间
  • 明确标明某人某日的离岗回岗时间

以便于使用度量值计算业务指标。

有了这个思路,也无法直接处理,因为根本无从下手,这时我们可以来缩小问题范围,例如:我们只考察一个人的某天的数据,如下:

为此,在PowerBI的查询编辑中,可以得到:

这个过程中存在一定的技巧:

  • 新增一个索引列
  • 对type进行透视
  • 填充 离开 或 回来 的数据
  • 判断类型并标识
  • 去掉由于透视导致的重复
  • 计算离开秒数

这里需要重点强调的是,用这种技巧的处理可以自动处理掉尾随未刷卡的情况,即若无上班打卡或下班打卡记录,则无相应记录。

在这里充分体现了PowerBI查询编辑的强大特性。对于 单人单日 的可以进行处理,那么对于多人多日的则可以利用这个原子处理进行进一步处理。

考察多日多人的情况

由于 单人单日 的情况已经得解,根据 分治法 的策略,现在的问题是如何将原问题化解为子问题并得以整合。不难看出,只需要将多人多日进行分组,每个分组则成为 单人单日 的原子问题。再使用上述方法处理即可,则有:

于是展开数据,即得到整合后的结果。

总结

本案例具有高度推广价值,任何企业基本都使用考勤打卡机,并都可以以Excel导出考勤记录,只不过对这些数据的处理并不简单直观,本案例给出PowerBI 数据准备 的示范,并可以直接移植在 Excel 中。如果是用 VBA 等方法处理,相信会更加复杂。最后感谢订阅会员提供此实际案例。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-07-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 PowerBI战友联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 背景
  • 打卡机的记录
  • 难点分析
  • 考察单日单人的情况
  • 考察多日多人的情况
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档