Power BI 新函数-计算工作日天数

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 焦棚子