lastworkdate - スクリプトおよびチャート関数
lastworkdate 関数は、オプションで指定された holiday を考慮した上で、start_date に開始した場合に no_of_workdays (月~金曜日) の日数に達する最早終了日を返します。start_date と holiday は、有効な日付またはタイムスタンプでなければなりません。
構文:
lastworkdate(start_date, no_of_workdays {, holiday})
戻り値データ型: 整数
制限事項
開始日が月曜日で終了日が金曜日の業務週以外に関与する地域やシナリオに対して 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 の開始と終了日が表示されています (業務日は緑色でハイライトされている)。
例 2 - 単一の休日
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ただし、2022 年 5 月 18 日に休日が 1 日スケジュールされています。先行する LOAD の lastworkdate() 関数には、各プロジェクトが終了する予定の日時を特定する第 3引数に休日が含まれます。
ロード スクリプト
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 引数として入力されます。結果として、休日が終了日までの業務日の 1 日に当たるため、プロジェクト 3 の終了日は 1 日後にずれます。
次のカレンダーは、プロジェクト 3 の開始/終了日と、休日によりプロジェクトの終了日が 1 日変更されることを示しています。
例 3 - 複数の休日
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ただし、5 月 19 日、20 日、21 日、および 22 日に対して 3 日の休日がスケジュールされています。先行する LOAD の lastworkdate() 関数には、各プロジェクトが終了する予定の日時を特定する第 3引数に休日が含まれます。
ロード スクリプト
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 |
4 日の休日は、開始日後の lastworkdate() 関数の引数と業務日数のリストとして入力されます。
次のカレンダーは、プロジェクト 3 の開始/終了日と、休日によりプロジェクトの終了日が 3 日変更されることを示しています。
例 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 |
単一のスケジュールされた休日は、チャートのメジャーとして入力されます。結果として、休日が終了日までの勤務日の 1 日に当たるため、プロジェクト 3 の終了日は 1 日後にずれます。
次のカレンダーは、プロジェクト 3 の開始/終了日と、休日によりプロジェクトの終了日が 1 日変更されることを示しています。