【FineBI学习打卡】DAY92 如何实现员工考勤班次自动化?
第92天知识点:如何实现员工考勤班次自动化?
前面文章中我们提到过如何利用新增赋值列去实现数值区间的模糊匹配。
但如果不是数值区间而是带有时分秒的日期格式的话,新增赋值列好像难以实现下面的判断功能。
比如:根据不同的时间段去判断员工上班班次。
今天我们就来看看如何在FineBI中实现上述效果?
一般,我们的排班班次标准可能会分为2种:
第一种:
第二种:
对于不同的排班班次标准,我们的处理方式会略有区别。
首先,我们来看一下今天的案例背景及需求。
案例背景
现在有一张打卡记录表,涉及字段只有一个:打卡时间。
案例需求
我们需要根据上述两种不同的排班标准去计算出员工对应的上班班次,结果用 打卡日期+X班 字样显示,也就是希望实现文章第二张图的效果。
操作步骤
首先,我们来看一下第一种排班班次标准对应的处理步骤。
分析:
当打卡时间对应的小时落在某一排班标准开始时间对应的小时(含)之后且在结束时间对应的小时(含)之前,就说明该打卡时间属于该排班时段对应的班次。
操作步骤:
添加条件标签列。
标签1:
标签名称-公式:
LEFT(打卡时间,10)+"-"+"A班"
添加公式-满足:
AND(HOUR(打卡时间)>=9,HOUR(打卡时间)<=11)
标签2:
标签名称-公式:
LEFT(打卡时间,10)+"-"+"B班"
添加公式-满足:
AND(HOUR(打卡时间)>=12,HOUR(打卡时间)<=17)
标签3:
标签名称-公式:
LEFT(打卡时间,10)+"-"+"C班"
添加公式-满足:
AND(HOUR(打卡时间)>=18,HOUR(打卡时间)<=23) 绿色部分可忽略不写
剩余添加标签:
标签名称-公式:
LEFT(打卡时间,10)+"-"+"D班"
最终结果如下:
说难吧也不难,就一步。
说简单吧也不简单,计算逻辑也得梳理一番。
标准1既然已经解决出来了,标准2是不是也可以用同样的方式去实现呢?
感兴趣的小伙伴可以自己先尝试一下,看看结果的正确性。
是不是发现,大多数结果判断都没有问题,但对于某一小部分会存在差异。
但如果某一小部分数据结果存在差异,那就意味着整体的判断逻辑还是存在问题的。
问题出现在哪里呢?
标准2前一个排班时段的结束时间对应的小时与后一个排班时段的开始时间对应的小时其实是一样的,所以标准1的判断无法满足标准2,我们还需要在标准1基础上进行一些优化。
分析:
当打卡时间对应的小时落在某一排班标准开始时间对应的小时(含)之后且在结束时间对应的小时(含)之前,就说明该打卡时间属于该排班时段对应的班次。
但当打卡时间对应的小时与排班标准结束时间对应的小时相等时,打卡时间对应的分钟需小于1 。
操作步骤:
添加条件标签列。
标签1:
标签名称-公式:
LEFT(打卡时间,10)+"-"+"A班"
添加公式-满足:
IF(HOUR(打卡时间)=12,MINUTE(打卡时间)<1,AND(HOUR(打卡时间)>=9,HOUR(打卡时间)<=12))
标签2:
标签名称-公式:
LEFT(打卡时间,10)+"-"+"B班"
添加公式-满足:
IF(HOUR(打卡时间)=18,MINUTE(打卡时间)<1,AND(HOUR(打卡时间)>=12,HOUR(打卡时间)<=18))
标签3:
标签名称-公式:
LEFT(打卡时间,10)+"-"+"C班"
添加公式-满足:
IF(HOUR(打卡时间)=0,MINUTE(打卡时间)<1,AND(HOUR(打卡时间)>=18,HOUR(打卡时间)<=24)) 绿色部分可忽略不写
剩余添加标签:
标签名称-公式:
LEFT(打卡时间,10)+"-"+"D班"
最终结果如下:
对比一下,其实差别主要就是在对于“卡点”时间的判断上。
所以,不要小看这59秒的空间,你的1分钟,考勤人员的1天工。
好了,今天的内容就分享到这里。
感兴趣的小伙伴自己动手尝试一下吧~