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 Cloud 使用者介面中顯示的語言無關。Qlik Cloud 顯示的語言將與您正在使用的瀏覽器相同。
若您是應用程式建立者,可以為您建立的應用程式設定預設地區。如需詳細資訊,請參閱Qlik Cloud 分析 中設定用於建立應用程式和指令碼的偏好區域設定 。
範例 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 工作日的行事曆圖表 (無假期)
以上行事曆以視覺方式概述 id 為 5 的專案。專案 5 開始於 2022 年 8 月10 日星期三,並結束於 2022 年 8 月 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,呈現此調整以納入假期。此假期發生在專案 5 期間 2022 年 8 月 19 日星期五。因此,專案 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,呈現此調整以納入假期。此假期發生在專案 5 期間 2022 年 8 月 19 日星期五。因此,專案 5 的總 net_work_days 值減少一天,從 13 天變成 12 天。