networkdays - 脚本和图表函数在该页面上
networkdays 函数用于返回工作日的编号(周一至周五),在 start_date 和 end_date 之间,并将任何列出的可选 holiday 考虑在内。
语法:
networkdays
( start_date, end_date [, holiday] )
返回数据类型: 整数
日历图表显示 networkdays 函数返回的日期范围
networkdays 函数具有以下限制:
参数
start_date
评估的开始日期。
end_date
评估的结束日期。
holiday
从工作日排除假期。假日表示为字符串常量日期。您可以指定多个假期日期,以逗号分隔。
示例: '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014'
适用场景
当用户希望计算使用两个日期之间的工作周天数时,networkdays() 函数通常用作表达式的一部分。例如,如果用户希望计算员工在 PAYE(即收即付)合同中的总工资。
函数示例
networkdays ('12/19/2013', '01/07/2014')
返回 14。以下示例没有将假期考虑在内。
networkdays ('12/19/2013', '01/07/2014', '12/25/2013', '12/26/2013')
返回 12。以下示例将 12/25/2013 至 12/26/2013 的假期考虑在内。
networkdays ('12/19/2013', '01/07/2014', '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014')
返回 10。以下示例将两个假期考虑在内。
区域设置
除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat 语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。
应用程序中的默认区域设置基于安装 Qlik Sense 的计算机或服务器的区域系统设置。如果您访问的 Qlik Sense 服务器设置为瑞典,则数据加载编辑器将使用瑞典地区设置的日期、时间和货币。这些区域格式设置与 Qlik Sense 用户界面中显示的语言无关。Qlik Sense 将以与您使用的浏览器相同的语言显示。
示例 1 – 基本示例
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
包含项目 ID、开始日期和结束日期的数据集。该信息加载到名为 Projects 的表中。
日期字段已以 DateFormat 系统变量 (MM/DD/YYYY) 格式提供。
创建一个额外的字段 net_work_days ,以计算每个项目所涉及的工作日数。
加载脚本
SET DateFormat='MM/DD/YYYY';
Projects:
Load
*,
networkdays(start_date,end_date) as net_work_days
;
Load
id,
start_date,
end_date
Inline
[
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
id
start_date
end_date
net_work_days
结果表
1
01/01/2022
01/18/2022
12
2
02/10/2022
02/17/2022
6
3
05/17/2022
07/05/2022
36
4
06/01/2022
06/12/2022
8
5
08/10/2022
08/26/2022
13
由于没有计划的假日(这将出现在 networkdays() 函数的第三个参数中),函数从 end_date 中以及所有周末中减去 start_date ,以计算两个日期之间的工作日数。
突出显示项目 5 工作日的日历图(无节假日)
上面的日历以为 5 的 id 从视觉上勾勒出项目的轮廓。项目 5 于 2022 年 8 月 10 日星期三开始,2022 年 9 月 26 日结束。由于忽略了所有周六和周日,这两个日期之间(包括在内)有 13 个工作日。
示例 2 - 单假期
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
在这个例子中,2022 年 8 月 19 日有一天的假期。
加载脚本
SET DateFormat='MM/DD/YYYY';
Projects:
Load
*,
networkdays(start_date,end_date,'08/19/2022') as net_work_days
;
Load
id,
start_date,
end_date
Inline
[
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
id
start_date
end_date
net_work_days
结果表
1
01/01/2022
01/18/2022
12
2
02/10/2022
02/17/2022
6
3
05/17/2022
07/05/2022
36
4
06/01/2022
06/12/2022
8
5
08/10/2022
08/26/2022
12
单个计划假日作为 networkdays() 函数中的第三个参数输入。
突出显示项目 5 工作日的日历图(单个假日)
上面的日历直观地勾勒了项目 5,展示了将假日包括在内的调整。这个假期发生在 2022 年 8 月 19 日星期五的项目 5 期间。因此,项目 5 的总 net_work_days 值减少了一天,从 13 天减少到 12 天。
示例 3 - 多个假期
加载脚本和结果
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
然而,在本例中,有四个假期计划于 2022 年 8 月 18 日至 8 月 21 日。
加载脚本
SET DateFormat='MM/DD/YYYY';
Projects:
Load
*,
networkdays(start_date,end_date,'08/18/2022','08/19/2022','08/20/2022','08/21/2022') as net_work_days
;
Load
id,
start_date,
end_date
Inline
[
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
id
start_date
end_date
net_work_days
结果表
1
01/01/2022
01/18/2022
12
2
02/10/2022
02/17/2022
6
3
05/17/2022
07/05/2022
36
4
06/01/2022
06/12/2022
8
5
08/10/2022
08/26/2022
11
从 networkdays() 函数的第三个参数开始,以逗号分隔的列表形式输入四个计划假日。
突出显示项目 5 工作日的日历图(多个节假日)
上面的日历直观地勾勒了项目 5,展示了将这些假日包括在内的调整。这段计划假期发生在项目 5 期间,其中两天发生在星期四和星期五。因此,项目 5 的总 net_work_days 值从 13 天减少到 11 天。
示例 4 - 单假期
加载脚本和图表表达式
概述
打开数据加载编辑器,并将下面的加载脚本添加到新选项卡。
加载脚本包含:
2022 年 8 月 19 日有一天的假期。
然而,在本例中,未更改的数据集被加载到应用程序中。net_work_days 字段作为图表对象中的度量值计算。
加载脚本
SET DateFormat='MM/DD/YYYY';
Projects:
Load
id,
start_date,
end_date
Inline
[
id,start_date,end_date
1,01/01/2022,01/18/2022
2,02/10/2022,02/17/2022
3,05/17/2022,07/05/2022
4,06/01/2022,06/12/2022
5,08/10/2022,08/26/2022
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
创建以下度量:
= networkdays(start_date,end_date,’08/19/2022’)
结果表
1
01/01/2022
01/18/2022
12
2
02/10/2022
02/17/2022
6
3
05/17/2022
07/05/2022
36
4
06/01/2022
06/12/2022
8
5
08/10/2022
08/26/2022
12
单个计划假日作为 networkdays() 函数中的第三个参数输入。
日历图,显示带单个假日的净工作日(图表对象)
上面的日历直观地勾勒了项目 5,展示了将假日包括在内的调整。这个假期发生在 2022 年 8 月 19 日星期五的项目 5 期间。因此,项目 5 的总 net_work_days 值减少了一天,从 13 天减少到 12 天。