160_技巧_Power BI 新函式-計算工作日天數

焦棚子發表於2022-07-15

160_技巧_Power BI 新函式-計算工作日天數

一、背景

Power BI 2022 年 7 月 14 日更新了最新版本的,版本號為:2.107.683.0 。

更多更新內容可以檢視官方部落格:https://powerbi.microsoft.com/zh-cn/blog/power-bi-july-2022-feature-summary/

今天我們重點看一下更新的新函式:NETWORKDAYS ,返回兩個日期(含)之間的整個工作日天數;其中引數可以指定週末及假期表;週末和節假日將不被視為工作日。

官方文件地址:https://docs.microsoft.com/zh-cn/dax/networkdays-dax

二、DEMO實踐

我們來看下實際效果。

Power BI 公共 web 效果:https://demo.jiaopengzi.com/pbi/160-full.html

160-1

1、現有寫法

_NETWORKDAYS_NOT_NEW = 
/*
現有寫法
[C03_WeekDay] 中週一為 0 ;週日為 6 。
*/

VAR NOT_HOLIDAY =
    FILTER ( '01_Calendar', '01_Calendar'[C41_Holiday] = BLANK () )
VAR NOT_WEEKEND =
    FILTER ( NOT_HOLIDAY, [C03_WeekDay] <> 5 && [C03_WeekDay] <> 6 )
RETURN
    COUNTROWS ( NOT_WEEKEND )

2、新函式寫法

_NETWORKDAYS_NEW = 
/*
新函式寫法
表示一週中不包含在 start_date 到 end_date 之間的整個工作日天數中的週末天數。
週末是一個週末數字,用於指定週末發生的時間。
週末數值表示以下週末日:
1:或省略:星期六、星期日
2:星期日、星期一
3:星期一、星期二
4:星期二、星期三
5:星期三、星期四
6:星期四、星期五
7:星期五、星期六
11:僅星期日
12:僅星期一
13:僅星期二
14:僅星期三
15:僅星期四
16:僅星期五
17:僅星期六
*/
VAR HOLIDAY =
    SUMMARIZE (
        FILTER ( ALL ( '01_Calendar' ), '01_Calendar'[C41_Holiday] <> BLANK () ),
        [C01_Dates]
    )
VAR START_DATE =
    STARTOFMONTH ( '01_Calendar'[C01_Dates] )
VAR END_DATE =
    ENDOFMONTH ( '01_Calendar'[C01_Dates] )
VAR _NETWORKDAYS =
    NETWORKDAYS ( START_DATE, END_DATE, 1, HOLIDAY )
RETURN
    _NETWORKDAYS

三、總結

1、無論新函式的寫法,還是不使用新函式寫法,都需有前置假期設定。

2、新函式 第三引數的可選值非常多,從 1 到 17 ;可選,分別代表不同的意義,詳細見上述程式碼。

3、新函式中第四引數,即是假期的日期表。

4、從當前的寫法來看,有一張合適的日期表(可以參考之前文章:https://jiaopengzi.com/2635.html)可以事半功倍,不使用新函式依然可以完美計算工作日,當然也可以計算假期。

附件下載

https://jiaopengzi.com/2821.html

視訊課

https://jiaopengzi.com/all-course

by 焦棚子

相關文章