Power BI DAX NETWORKDAYS.INTL 函數:自訂週末工作日計算完整指南
Power BI DAX NETWORKDAYS.INTL 函數:自訂週末工作日計算完整指南
📅 發布日期:2026-09-20
🏷️ 分類:日期與時間函數 DAX 函數
💡 函數速查卡
| 函數名稱 | NETWORKDAYS.INTL |
|---|---|
| 所屬類別 | 日期與時間函數 (Date and Time functions) |
| 傳回類型 | 整數 (Integer),代表兩日期之間的實際工作天數 |
| 常用頻率 | ★★★★☆ |
在 Power BI 的數據建模與報表開發中,NETWORKDAYS.INTL 函數是一個極為強大的工具,用於**計算兩個日期之間包含的完整工作天數**。與傳統的 NETWORKDAYS 不同,NETWORKDAYS.INTL 允許您自訂哪些天為週末(例如僅週日休息,或是排班制的特定休息日),並能排除指定的國定假日資料表,廣泛應用於 HR 考勤分析、專案時程計算(SLA)、物流運送天數估算等情境。
一、 基本語法與參數
NETWORKDAYS.INTL 函數的標準 DAX 語法結構如下:
NETWORKDAYS.INTL(<start_date>, <end_date>[, <weekend>][, <holidays>])
| 參數 | 說明 | 預設值 / 必填 |
|---|---|---|
start_date |
計算區間的起始日期(含該日)。 | 必填 |
end_date |
計算區間的結束日期(含該日)。 | 必填 |
weekend |
指定哪些天為週末。可用數字代碼(如 1 代表週六週日)或長度 7 的字串(如 "0000011",1 代表非工作日,從週一開始算)。 | 選填(預設為 1:週六與週日) |
holidays |
包含需排除之國定假日或特休例假日的單欄資料表(Table reference)。 | 選填 |
二、 核心功能說明
NETWORKDAYS.INTL 能自動扣除指定區間內的週末與國定假日,為商業分析提供精確的淨工作日數計算。
在 Power BI 報表建模中,常見的實務應用包括:
- 跨國與特殊工時設定:支援不同國家或產業的週末習慣(如中東地區週五週六為週末,或是餐飲服務業僅週一休息)。
- KPI / SLA 績效衡量:精確計算工單處理時間、客戶客服回應時效(不包含非工作日)。
- 人力資源與薪資計算:根據每個月的實際應出勤工作天數計算員工出勤率或基本薪資折算。
三、 實用 DAX 範例
範例 1:基本用法(預設週六日為週末)
計算訂單成立日與出貨日之間的工作天數:
// 建立計算行:計算處理訂單所需的標準工作天數(預設週六、週日為週末)
ShippingWorkingDays =
NETWORKDAYS.INTL(
'Orders'[OrderDate],
'Orders'[ShipDate]
)
範例 2:自訂週末(例如僅週日休息,或使用 7 位元字串)
某些產業週六需要上班,僅週日為休假日。可以使用數字代碼 11,或是 7 位元字串 "0000001"(分別代表週一到週日,1 代表非工作日):
// 方法 1:使用代碼 11 代表「僅週日」為週末
WorkDaysSundayOnly =
NETWORKDAYS.INTL(
DATE(2026, 10, 1),
DATE(2026, 10, 31),
11
)
// 方法 2:使用字串 "0000011"(週一至週五工作,週六週日休息)
WorkDaysCustomString =
NETWORKDAYS.INTL(
DATE(2026, 10, 1),
DATE(2026, 10, 31),
"0000011"
)
範例 3:結合假日表(Holidays Table)進行完整扣除
扣除國定假日與特定例休日(傳入假日表中的日期欄位):
// 扣除假日表 'DimHolidays'[HolidayDate] 中列出的國定假日
NetWorkDaysWithHolidays =
NETWORKDAYS.INTL(
'Projects'[StartDate],
'Projects'[EndDate],
1,
VALUES('DimHolidays'[HolidayDate])
)
四、 常見陷阱與注意事項
⚠️ 注意事項 1:起始日期大於結束日期的傳回值
當
當
start_date 大於 end_date 時,函數將會傳回負數或 0。若需計算絕對天數,可先透過 IF 邏輯判斷或搭配 ABS 函數處理。
⚠️ 注意事項 2:7 位元週末字串的格式要求
若使用字串代表週末(例如
若使用字串代表週末(例如
"0000011"),字串長度必須剛好為 7 個字元,且僅能填入 0(工作日)與 1(非工作日)。若填入 "1111111"(全為非工作日),函數將會傳回錯誤或 0。
五、 相關函數推薦
NETWORKDAYS:計算兩日期的工作天數(固定預設週六、週日為週末)。DATEDIFF:計算兩個日期之間的時間差距(以日、月、年等單位表示,不排除週末)。DATEADD:將指定的日期間隔推算至未來或過去。
六、 官方文件連結
想進一步瞭解微軟官方說明與 DAX 語法細節,可參考:
留言
張貼留言