DAX Calculate实战:如何帮助HR妹子整理考勤表

原创 2018年04月16日 14:59:11

每个月整理考勤记录几乎都会让HR妹子暴走不已,除了打卡机偶尔抽风导致数据出错误外,最麻烦的恐怕就是要核对员工打卡记录信息了。虽然理论上每个员工每天只应该有两条打卡记录,上班一次,下班一次,但是实际情况下大家可能手抖,多打了几次卡,也可能上班或者下班时忘记了打卡,这就导致数据出现了重复或缺失,不可能直接生成报表使用。

为了解除HR妹子每个月手动核对成百上千条数据的苦恼,可以利用Power BI对数据进行整理。假设下表是打卡机生成的原始记录,可以看得里面员工打卡信息有重复和遗漏的情况。

这里写图片描述

首先用DAY函数将打卡时间中的日期分离出来以便按照日期对打卡记录进行整理。
这里写图片描述
接下来处理重复信息。先确定考核基准,认定员工最早一次打卡时间为有效的上班时间,最晚一次打卡的时间为有效下班时间。我们可以新创建两个计算列,用来计算当前员工最早一次和最晚一次打卡时间。

要计算最早时间可以使用下列公式进行:
这里写图片描述

这里面CALCULATE函数是用来对数据进行过滤处理,里面调用了两个函数:FIRSTNONBLANK和ALLEXCEPT。

FIRSTNONBLANK函数隶属于智能时间函数组,其意义是返回列中经其内调用表达式过滤后具有非空白值的第一个值。使用方法为:

FIRSTNONBLANK(<column>,<expression>)

这里面Column是指要查找计算的列,expression位置是填写用来对该列进行过滤的表达式。我们在公式里面是用FIRSTNONBLANK计算Records[Time]这一列中第1个出现的时间。

ALLEXCEPT是筛选函数组下面的一个公式,其目的是返回表中除受到指定的列筛选器影响的那些行之外的所有行。使用格式为:

ALLEXCEPT(<table>,<column>[,<column>[,…]])

这其中table指的是要做过滤的表名,column处填写的是要保留不做过滤的列名。我们调用ALLEXCEPT是对原始数据去除除了ID和Day以外所有过滤条件,目的是给外层CALCULATE函数返回一个筛选条件,即按照相同ID和Day相同的数据进行比对的以获取FIRSTNONBLANK的时间。

这样,通过CALCULATE,FIRSTNONBLANK以及ALLEXCEPT三个函数计算后就可以获得每个员工当天第最早的一次打卡时间。同理,将FIRSTNONBLANK换成其对应的LASTNONBLANK,就可以获得员工当天最后一次打卡时间。
这里写图片描述

处理处理完毕之后可以在报表页面新建一个表(透视表),将数据更加清晰的显示出来。
这里写图片描述
近一步的,我们还可以添加一个列用来记录那些员工缺少打卡信息:

Missing_Record = IF(Records[First_Record]=Records[Last_Record],"Yes","No")

还可以再添加一个列记录那些员工是在18点之后打卡的,以便找出加班工作的员工。

Overtime_Work = IF(HOUR(Records[Last_Record])>=18,"Yes","No")

当然还可以用下列公式统计一下每天8点半以后打卡,算作迟到的员工记录:

Arrive_Late = IF(HOUR(Records[First_Record])>=8&&MINUTE(Records[First_Record])>=30,"Yes","No")

整理好表单之后,这样我们就获得了一个比较干净全面的员工打卡记录,之后可以在该表的记录上创建报表,显示每个月员工的工作情况。
这里写图片描述

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jessica_seiya/article/details/79958284

用 API 作简繁体转换

時間: 2004/3/25作者: Robert參考: MSDN電郵: zsc771120@yahoo.com.cn關鍵字: 简繁体 API 内码 BIG5 GB2312 MultiByteToWide...
  • zzzsssccc
  • zzzsssccc
  • 2004-04-15 16:05:00
  • 3501

DAX Tabular Calculate,Filter,Value和All

DAX Tabular Calculate Filter Value All
  • u011692203
  • u011692203
  • 2015-07-06 10:26:56
  • 677

DAX Calculate&SUMMARIZE 关键词的说明

CALCULATE SUMMARIZE DAX TABULAR
  • rav009
  • rav009
  • 2016-03-15 18:51:59
  • 1606

DAX Calculate的使用说明

对数据进行建模分析时经常会使用到DAX中的Calculate函数,这个函数微软给的中文解释是“在筛选器修改的上下文中对表表达式进行求值。”读起来很是绕口,但实际上Calculate函数可以看做是类似E...
  • jessica_seiya
  • jessica_seiya
  • 2018-04-12 10:40:57
  • 56

SQL,DAX的比较

以下SQL和DAX一样: 1, SQL SELECT *FROM Product   DAX EVALUATE Product 2, SQL SELECT [Product ...
  • incognito007
  • incognito007
  • 2012-01-02 04:14:29
  • 854

PowerPivot的DAX函数实战

针对PowerPivot的DAX函数参考 一、筛选函数 1、ALL函数:返回表中的所有行货返回列中的所有值,同时忽略可能已应用的任何筛选器,此函数可用于清除筛选器对表中的所有行创建计算,返回删除了筛选...
  • weixin_36135773
  • weixin_36135773
  • 2017-12-15 09:28:19
  • 1172

MDX,DAX, or SQL的比较

MDX,DAX, or SQL,同样的问题,一样的结果.   看一个例子 SQL SELECT pc.EnglishProductCategoryName, SUM(SalesAm...
  • incognito007
  • incognito007
  • 2012-01-02 03:50:31
  • 1577

面试14种神回复,HR妹子可能会爱上你!

来自:大叔爱吐槽(微信号: dashuaitucao)要应聘免不了面试,对于HR的各种问题,你该怎么回答呢?下面有一些例子,主要整理自段子区,绘画作者则是美国作者Nathan W. Pyle1.2.3...
  • tTU1EvLDeLFq5btqiK
  • tTU1EvLDeLFq5btqiK
  • 2018-01-16 00:00:00
  • 1166

DAX-期末余额计算

期末余额计算比较常见,比如,存货。DAX功能十分强大,丝毫不逊色MDX。 下面以一个实例说明,分别计算四种情况期末余额: 基本情况,地区表,商店表,数量表,日期表。   第一种情况, 2...
  • incognito007
  • incognito007
  • 2012-06-23 07:29:38
  • 2052

DAX 语法规范

数据分析表达式 (DAX) 是一个由函数、运算符和常量组成的库,可在 PowerPivot for Excel 中组合这些库元素以生成公式和表达式。本节提供了有关 DAX 语言的语法和要求的详细信息。...
  • zhongguomao
  • zhongguomao
  • 2017-02-28 16:11:31
  • 1884
收藏助手
不良信息举报
您举报文章:DAX Calculate实战:如何帮助HR妹子整理考勤表
举报原因:
原因补充:

(最多只允许输入30个字)