全部展开/折叠
lastworkdate - 脚本和图表功能在该页面上
lastworkdate 函数用于返回最早的结束日以获得 no_of_workdays (周一至周五),如果在 start_date 开始考虑任何列出的可选 holiday 。start_date 和 holiday 应是有效的日期或时间戳。
语法:
lastworkdate( start_date, no_of_workdays {, holiday} )
返回数据类型: 整数
显示如何使用 lastworkdate() 函数的日历
限制
除了周一开始到周五结束的工作周之外,没有任何方法可以修改区域或场景的 lastworkdate() 函数。
假日参数必须是字符串常数。它不接受表达式。
适合使用 lastworkdate 的情况
lastworkdate() 函数通常用作表达式的一部分,当用户希望根据项目开始的时间和该期间将发生的假期计算项目或作业的建议结束日期时。
区域设置
除非另有规定,本主题中的示例使用以下日期格式:MM/DD/YYYY。日期格式已经在数据加载脚本中的 SET DateFormat 语句中指定。由于区域设置和其他因素,系统中的默认日期格式可能有所不同。您可以更改以下示例中的格式以满足您的要求。或者,您可以更改加载脚本中的格式以匹配这些示例。有关详细信息,请参阅修改应用程序和脚本的区域设置 。
应用程序中的默认区域设置基于用户配置文件。这些区域格式设置与 Qlik Cloud 用户界面中显示的语言无关。Qlik Cloud 将以与您使用的浏览器相同的语言显示。
如果你是应用程序创建者,你可以为自己创建的应用程序设置默认区域。有关更多信息,请参阅设置 Qlik Cloud Analytics 中创建应用程序和脚本所用的首选区域设置 。
参数
start_date
评估的开始日期。
no_of_workdays
要实现的工作日天数。
holiday
从工作日排除假期。假日表示为字符串常量日期。您可以指定多个假期日期,以逗号分隔。
示例: '12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014'
示例 1 – 基本示例
加载脚本和结果
概览
打开数据加载编辑器,并将下面的加载脚本添加到新部分。
加载脚本包含:
加载脚本
SET DateFormat='MM/DD/YYYY';
Projects:
Load
*,
LastWorkDate(start_date,effort) as end_date
;
Load
id,
start_date,
effort
Inline
[
id,start_date,effort
1,01/01/2022,14
2,02/10/2022,17
3,05/17/2022,5
4,06/01/2022,12
5,08/10/2022,26
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
id
start_date
effort
end_date
结果表
id
start_date
effort
end_date
1
01/01/2022
14
01/20/2022
2
02/10/2022
17
03/04/2022
3
05/17/2022
5
05/23/2022
4
06/01/2022
12
06/16/2022
5
08/10/2022
26
09/14/2022
由于没有计划的假日,该函数将定义的工作日数(星期一到星期五)添加到开始日期,以找到最早可能的结束日期。
以下日历显示项目 3 的开始和结束日期,工作日以绿色突出显示。
显示项目 3 开始和结束日期的日历
示例 2 - 单假期
加载脚本和结果
概览
打开数据加载编辑器,并将下面的加载脚本添加到新部分。
加载脚本包含:
然而,2022 年 5 月 18 日有一个假期。前置 Load 中的 lastworkdate() 函数在其第三个参数中包含假日,以标识每个项目计划何时结束。
加载脚本
SET DateFormat='MM/DD/YYYY';
Projects:
Load
*,
LastWorkDate(start_date,effort, '05/18/2022') as end_date
;
Load
id,
start_date,
effort
Inline
[
id,start_date,effort
1,01/01/2022,14
2,02/10/2022,17
3,05/17/2022,5
4,06/01/2022,12
5,08/10/2022,26
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
id
start_date
effort
end_date
结果表
id
start_date
effort
end_date
1
01/01/2022
14
01/20/2022
2
02/10/2022
17
03/04/2022
3
05/17/2022
5
05/24/2022
4
06/01/2022
12
06/16/2022
5
08/10/2022
26
09/14/2022
单个计划假日作为 lastworkdate() 函数中的第三个参数输入。因此,项目 3 的结束日期推迟了一天,因为假期发生在结束日期之前的一个工作日。
下面的日历显示项目 3 的开始和结束日期,并显示假日将项目的结束日期更改一天。
显示项目 3 开始和结束日期的日历,5 月 18 日为假日
示例 3 - 多个假期
加载脚本和结果
概览
打开数据加载编辑器,并将下面的加载脚本添加到新部分。
加载脚本包含:
然而,5 月 19 日、20 日、21 日和 22 日有三个假期。前置 Load 中的 lastworkdate() 函数在其第三个参数中包含每个假日,以确定每个项目计划何时结束。
加载脚本
SET DateFormat='MM/DD/YYYY';
Projects:
Load
*,
LastWorkDate(start_date,effort, '05/19/2022','05/20/2022','05/21/2022','05/22/2022') as end_date
;
Load
id,
start_date,
effort
Inline
[
id,start_date,effort
1,01/01/2022,14
2,02/10/2022,17
3,05/17/2022,5
4,06/01/2022,12
5,08/10/2022,26
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
id
start_date
effort
end_date
结果表
id
start_date
effort
end_date
1
01/01/2022
14
01/20/2022
2
02/10/2022
17
03/04/2022
3
05/17/2022
5
05/25/2022
4
06/01/2022
12
06/16/2022
5
08/10/2022
26
09/14/2022
这四个假期在开始日期和工作日数之后作为参数列表输入 lastworkdate() 函数中。
以下日历显示项目 3 的开始和结束日期,并显示节假日将项目的结束日期更改三天。
显示项目 3 的开始和结束日期的日历,假期为 5 月 19 日至 22 日
示例 4 - 单假期(图表)
加载脚本和图表表达式
概览
使用与第一个 相同的数据集和场景。
然而,在本例中,未更改的数据集被加载到应用程序 中。end_date 字段作为图表对象中的度量 计算。
加载脚本
SET DateFormat='MM/DD/YYYY';
Projects:
Load
id,
start_date,
effort
Inline
[
id,start_date,effort
1,01/01/2022,14
2,02/10/2022,17
3,05/17/2022,5
4,06/01/2022,12
5,08/10/2022,26
];
结果
加载数据并打开工作表。创建新表并将这些字段添加为维度:
要计算 end_date,创建以下度量:
结果表
id
start_date
effort
=LastWorkDate(start_date,effort,'05/18/2022')
1
01/01/2022
14
01/20/2022
2
02/10/2022
17
03/04/2022
3
05/17/2022
5
05/23/2022
4
06/01/2022
12
06/16/2022
5
08/10/2022
26
09/14/2022
在图表中输入单个计划假日作为度量。因此,项目 3 的结束日期推迟了一天,因为假期发生在结束日期之前的一个工作日。
下面的日历显示项目 3 的开始和结束日期,并显示假日将项目的结束日期更改一天。
显示项目 3 开始和结束日期的日历,5 月 18 日为假日