networkdays - スクリプトおよびチャート関数
networkdays 関数は、オプションで指定された holiday を考慮した上で、start_date と end_date の間の当日を含む作業日数 (月~金曜日) を返します。
構文:
networkdays
(start_date, end_date [, holiday])
戻り値データ型: 整数
networkdays 関数には次の制限事項があります:
引数
start_date
|
評価する開始日。 |
end_date
|
評価する終了日。 |
holiday
|
作業日から除外する休日期間。休日は文字列定数の日付として示されます。コンマで区切り、複数の休日を設定できます。
'12/25/2013', '12/26/2013', '12/31/2013', '01/01/2014'
|
使用に適しているケース
networkdays() 関数は、計算で 2 つの日付の間に週の労働日数を使用する場合に、数式の一部としてよく使われます例えば、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 を返します。この例では、2 日間の休日期間を考慮に入れています。 |
地域の設定
特に指定のない限り、このトピックの例では次の日付書式を使用しています: MM/DD/YYYY。日付書式は、データ ロード スクリプトの SET DateFormat ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。詳しくは「アプリとスクリプトの地域設定の変更」を参照してください。
アプリの既定地域設定は、ユーザー プロファイルに基づいています。これらの地域の書式設定は、Qlik Cloud ユーザー インターフェースに表示される言語とは関係ありません。Qlik Cloud は使用しているブラウザと同じ言語で表示されます。
アプリの作成者は、作成するアプリの既定の地域を設定できます。詳細については、「Qlik Cloud Analytics でアプリとスクリプトを作成するための優先地域設定の設定」を参照してください。
例 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() 関数の第 3 引数に入っているはずである)、関数は start_date を end_date、そしてすべての週末から差し引いて、2 つの日付の間の勤務日数を計算します。
上記のカレンダーは、id が 5 のプロジェクトを視覚的に概説しています。プロジェクト 5 は 2022 年 8 月 10 日 (水) に開始され、2022 年 8 月 26 日に終了します。土日はすべて無視されるため、これら 2 つの日付を含むその間には 13 日あります。
例 2 – 単一の休日
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
この例では、2022 年 8 月 19 日に休日が 1 日予定されています。
ロード スクリプト
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() 関数に第 3 引数として入力されます。
上記のカレンダーはプロジェクト 5 を視覚的に概説しており、休日を含むこの調整を示しています。この休日は、プロジェクト 5 の期間、2022 年 8 月 19 日 (金) に発生します。その結果、プロジェクト 5 で合計 net_work_days の値が 13 日から 12 日に 1 日減ります。
例 3 – 複数の休日
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
ただし、この例では、2022 年 8 月 18 日~8 月 21 日に 4 日間の休日が予定されています。
ロード スクリプト
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 |
予定されている 4 日間は、networkdays() 関数の第 3 引数からカンマ区切りのリストとして入力されます。
上記のカレンダーはプロジェクト 5 を視覚的に概説しており、これらの休日を含むこの調整を示しています。予定された休日のこの期間は、プロジェクト 5 の期間中、木曜日と金曜日の 2 日間に発生します。その結果、プロジェクト 5 で合計 net_work_days の値が 13 日から 11 日に減ります。
例 4 – 単一の休日
概要
データ ロード エディターを開き、以下のロード スクリプトを新しいタブに追加します。
ロード スクリプトには次が含まれています。
2022 年 8 月 19 日に休日が 1 日予定されています。
ただし、この例では、変更されていないデータセットがアプリケーションにロードされます。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() 関数に第 3 引数として入力されます。
上記のカレンダーはプロジェクト 5 を視覚的に概説しており、休日を含むこの調整を示しています。この休日は、プロジェクト 5 の期間、2022 年 8 月 19 日 (金) に発生します。その結果、プロジェクト 5 で合計 net_work_days の値が 13 日から 12 日に 1 日減ります。