networkdays - スクリプトおよびチャート関数このページ上
networkdays 関数は、オプションで指定された holiday を考慮した上で、start_date と end_date の間の当日を含む作業日数 (月~金曜日) を返します。
構文:
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() 関数は、計算で 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 ステートメントで指定されています。既定の日付書式は、地域の設定やその他の要因により、システムによって異なる場合があります。以下の例の書式は、要件に合わせて変更できます。または、これらの例に一致するようにロード スクリプトの書式を変更できます。
App の既定の地域設定は、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() 関数の第 3 引数に入っているはずである)、関数は start_date を end_date 、そしてすべての週末から差し引いて、2 つの日付の間の勤務日数を計算します。
プロジェクト 5 の勤務日が強調表示されたカレンダーの図 (休日なし)
上記のカレンダーは、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 の勤務日が強調表示されたカレンダーの図 (休日 1 日)
上記のカレンダーはプロジェクト 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 を視覚的に概説しており、これらの休日を含むこの調整を示しています。予定された休日のこの期間は、プロジェクト 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 日減ります。