1. 概述
基礎表處理 中已經將資料表接入 BI,並對其進行了簡單的清洗。
接下來需要解決的問題有:
只有請假的員工會標註考勤狀態,有過打卡行為的員工不能區分考勤狀態;
打卡資訊中缺少員工的姓名、年齡、性別等基礎資訊,這些資訊都在「人員資訊表」中;
資料中只有打卡時間,但是缺少工作時長的資料等等。
需要透過 在我的分析編輯資料 來解決。
2. 區分打卡行為
2.1 標記有打卡行為的資料
1)建立一個分析主題,並新增「公共資料」中「打卡資訊表」的欄位。
並雙擊表名重命名為「考勤資料(不請假)」表。
2)過濾出非公休非請假的資料,即「狀態」欄位為空時的資料,這部分資料中員工應該正常打卡,將其過濾出來以便對他們的打卡資料進行分析。如下圖所示:
過濾詳細說明參見:過濾基礎功能
3)新增分組匯總,求出使用者每天打卡的最早時間和最晚時間。如下圖所示:
最早時間對應員工的上班時間。
最晚時間對應員工的下班時間。
分組匯總詳細說明參見:分組匯總基礎功能
4)建立一個欄位「判斷是否遲到」,在李明明的公司中,晚於 9:30 到公司就算遲到。所以我們建立一個 9:30 的欄位用於判斷,輸入公式:
TODATE(CONCATENATE(LEFT(日期,10)," ","09:30:00")),如下圖所示:
公式說明:
公式 | 說明 |
---|---|
LEFT(日期,10) | 取日期的年月日欄位 |
CONCATENATE(LEFT(日期,10)," ","09:30:00") | 連接出日期+9:30 的遲到時間資料 比如當前日期是 2022-05-05 則得到2022-05-50 09:30:00 |
TODATE(CONCATENATE(LEFT(日期,10)," ","09:30:00")) | 將遲到時間設定為日期型別 |
並使用時間差,如果結果<0,就是遲到,如下圖所示:
新增列詳細說明參見:新增欄-時間差
5)對考勤時間進行比較判斷。
當工作時長小於六小時時,判斷為缺勤;
當上班時間大於 9:30 時,判斷為遲到;
其餘判斷為「全勤」。
計算出工作時長後,新增列輸入公式:IF(工作小時<6,"缺勤",IF(是否遲到<0,"遲到","全勤")),如下圖所示:
新增列詳細說明參見:新增欄-公式函式
6)隱藏我們之後不需要的欄位。如下圖所示,在欄位設定中取消勾選即可。
欄位設定詳細說明參見:欄位設定
7)儲存並更新該表。
2.2 匯總考勤資料
此時需要將請假的使用者資料和未請假的資料進行匯總。
1)在分析主題新增資料:本地工程上的「打卡資訊表」重命名為「考勤匯總」表。
2)過濾出所有請假的資料(注意不選擇公休、調休、出差、出差在途)。如下圖所示:
注:因為只統計工作日資料,所以這裏不選擇公休、調休、出差、出差在途資料。
3)新增分組匯總,設定和「考勤資料(不請假)」相同的條件,如下圖所示:
注:此處為合併 2.1 節資料做準備。
4)將請假的資料和 2.1 節正常打卡的資料合併到一張表中。進行上下合併,如下圖所示:
上下合併詳細說明參見:上下合併基礎功能
3. 合併姓名、性別等資料
已經完成了對考勤資料的整理,接下來希望打卡資訊中能新增員工的姓名、年齡、性別等基礎資訊,這些資訊都在「人員資訊表」中。
因此需要使用左右合併功能,透過「工號」欄位將兩張資料表的資料進行合併,由於我們希望保留「打卡資訊表」的所有資料,因此選擇左合併。如下圖所示:
左右合併詳細說明參見:左右合併基礎功能
4. 計算工作時長和年齡
只有打卡時間但想要知道每個員工的工作時長,此時需要繼續使用資料集進行資料處理。
使用函式 DATESUBDATE 計算「最晚時間」和「最早時間」的時間差。輸入公式:DATESUBDATE(最晚時間,最早時間,"m")/60,如下圖所示:
注:時間欄位需要選擇資料表中的欄位,不能手動輸入文字。
若使用的實時資料,你可以使用新增欄-時間差 計算工作時長,如下圖所示:
在合併資料後,知道了員工身分證號,就可以透過計算,得到員工的年齡,使用公式:YEAR()-TOINTEGER(MID(身分證號碼,7,4)),如下圖所示:
注:身分證號碼需要選擇資料表中的欄位,不能手動輸入文字。
此時我們的資料處理就完成了,當然可以在使用欄位設定取消掉不需要使用的中間欄位。