Power BI DAX NETWORKDAYS 函數:計算兩日期間的實際工作天數完整指南
Power BI DAX NETWORKDAYS 函數:計算兩日期間的實際工作天數完整指南
📅 發布日期:2026-09-20
🏷️ 分類:日期與時間函數 DAX 函數
💡 函數速查卡
| 函數名稱 | NETWORKDAYS |
|---|---|
| 所屬類別 | 日期與時間函數 (Date and Time functions) |
| 傳回類型 | 整數 (Integer),代表兩日期間扣除週末與國定假日後的工作天數 |
| 常用頻率 | ★★★★★ |
在 Power BI / Analysis Services 的數據分析與專案管理中,NETWORKDAYS 函數用於計算兩個日期之間的**整數工作天數**。此函數能自動排除週末(預設為週六與週日,亦支援自訂休假模式),並可結合「國定假日清單」進行更精準的計算,廣泛應用於專案工期計算、訂單處理天數(SLA)及人力資源差勤分析。
一、 基本語法與參數
NETWORKDAYS 函數的標準 DAX 語法結構如下:
NETWORKDAYS(<start_date>, <end_date>[, <weekend>][, <holidays>])
| 參數 | 說明 | 預設值 / 必填 |
|---|---|---|
start_date |
計算區間的起始日期(包含當天)。 | 必填 |
end_date |
計算區間的結束日期(包含當天)。 | 必填 |
weekend |
指定哪些天為週末休假日。可用數字(如 1 代表星期六/日,11 代表僅星期日)或 7 個字元的字串(如 "0000011" 代表週六、日休假)。 |
選填(預設為 1,即週六與週日) |
holidays |
包含需排除之國定假日或特別休假日期的單行資料表(Single-column table)。 | 選填 |
二、 核心功能說明
NETWORKDAYS 能簡化傳統需要繁複 DAX 篩選語法才能算出的工作天數問題。它會在指定的日期區間內,逐日檢查並自動扣除非工作日。
在 Power BI 報表建模中,常見的實務應用包括:
- 計算客戶訂單從「下單日」到「出貨日」經歷了多少個實際工作天(SLA 分析)。
- 計算專案任務開工至完工耗費的實際人力資源天數。
- 靈活設定不同的產業輪班制或排班制休假模式(例如僅週日休假)。
三、 實用 DAX 範例
範例 1:計算基本工作天數(預設週六/週日為週末)
計算訂單表中的下單日期至出貨日期之間的工作天數:
// 建立計算行:計算訂單處理歷時的實際工作天數
OrderWorkingDays =
NETWORKDAYS(
'Orders'[OrderDate],
'Orders'[ShipDate]
)
範例 2:自訂休假模式與加入國定假日清單
設定休假為僅週日(代碼 11),並扣除 Holidays[Date] 資料行中的國定假日:
// 建立計算行:僅週日休假,且扣除國定假日資料表中的日期
ProjectWorkingDays =
NETWORKDAYS(
'Projects'[StartDate],
'Projects'[EndDate],
11,
VALUES('Holidays'[Date])
)
範例 3:動態防錯與日期順序處理
若起始日期晚於結束日期,NETWORKDAYS 會傳回負數。可透過 IF 與邏輯控制傳回安全結果:
// 建立度量值:確保起始日期大於結束日期時不產生非預期錯誤
SafeWorkingDays =
VAR StartD = MIN('Sales'[OrderDate])
VAR EndD = MAX('Sales'[DeliveryDate])
RETURN
IF(
NOT ISBLANK(StartD) && NOT ISBLANK(EndD),
NETWORKDAYS(StartD, EndD, 1, VALUES('Holidays'[Date])),
BLANK()
)
四、 常見陷阱與注意事項
⚠️ 注意事項 1:算頭也算尾(兩端均包含)
NETWORKDAYS 是閉區間計算。若起始日期與結束日期均為同一天,且該天為工作日,計算結果將傳回 1,而非 0。
⚠️ 注意事項 2:holidays 參數必須是單行資料表
傳入的
傳入的
holidays 參數必須是僅包含一欄日期的資料表。若直接傳入整張未處理的資料表會發生型別錯誤,建議使用 VALUES('Holidays'[Date]) 或字面陣列(如 {DATE(2026,1,1)})。
五、 相關函數推薦
六、 官方文件連結
想進一步瞭解微軟官方說明與 DAX 語法細節,可參考:
留言
張貼留言