之前曾分享過一個關于在職員工數量的計算案例(如何用Power BI計算在職員工數量?),最近又有星友問到另外一種相關的計算,如何根據每個員工的入職日期和離職日期,計算每個月員工的在職天數?
這種計算在人力資源管理中也很常見,這裡以下面這個簡單的數據為例,
根據這個員工表的信息,統計一個員工的當月在職天數并不難,關鍵是要判斷各種情況下,動态地計算出每個月的在職天數。
下面來介紹一種計算思路,實現步驟如下:
1. 建立數據模型
因為要按時間點計算,所以建立一個單獨的日期表是必要的,并且日期表不需要與員工表建立關系。
2. 創建度量值
需求是統計每個員工的某個月的在職天數,那麼員工姓名、月份應該作為篩選器來動态選擇,利用度量值獲取當前的上下文,結合員工表的信息來進行計算。
關于計算的思路和邏輯都已體現在下面這個度量值中,并在代碼中做了詳細注釋。
這個度量值并沒有用到複雜的函數,也沒有複雜的邏輯,關鍵是考慮清楚各種情況下,應該用哪些日期進行運算。
如果你先把這個計算邏輯想明白了,其實DAX就是上下文信息的加減運算而已。
3. 展示計算結果
選擇一個月份,利用表格就可以展示出每個員工的當月在職天數:
或者将員工與日期表中的年月作為矩陣的行列标題,一次計算出每個員工各個月份的在職天數:
這樣就實現了快速、動态計算每個員工每個月的在職天數的需求。
上面度量值用到的DAX并沒有難點,關鍵是要理解上下文,知道什麼是上下文,以及如何獲取上下文的信息,并根據這些信息進行各種情況下的邏輯運算。
更重要的是要明白自己的業務邏輯,就這個問題來說,就是要知道如何根據入職日期和離職日期來确定在職天數。很多人遇到問題不會用寫DAX,覺得DAX難,深究起來,其實是缺乏思考、懶于思考,自己都沒有真正想清楚計算邏輯,和DAX有什麼關系呢?
DAX隻是個工具,它可以幫你将具體的業務邏輯快速、動态的轉換為計算結果,但是它無法代替你思考~
更多推薦:PowerBI實踐應用:計算在職員工數據
PowerBI中的關系為什麼有虛線?這篇文章告訴你
PowerBI财務分析報告:如何恰當的運用報告設計元素?
采悟 | PowerBI星球
,