Power BI DAX MOD 函數:計算兩數相除後的餘數完整指南
Power BI DAX MOD 函數:計算兩數相除後的餘數完整指南
📅 發布日期:2026-09-20
🏷️ 分類:數學與三角函數 DAX 函數
💡 函數速查卡
| 函數名稱 | MOD |
|---|---|
| 所屬類別 | 數學與三角函數 (Math and Trig functions) |
| 傳回類型 | 整數或十進位數字 (與除數符號相同) |
| 常用頻率 | ★★★★☆ |
在 Power BI / Analysis Services 的 DAX 數據建模中,MOD 函數用於計算**兩數相除後的餘數(Remainder)**。結果的正負號總是與**除數(Divisor)**相同。此函數常用於奇偶數判斷、週期性循環計算、單位包裝換算(如將總件數拆解為箱數與零散件數)以及時間頻率分析。
一、 基本語法與參數
MOD 函數的標準 DAX 語法結構如下:
MOD(<number>, <divisor>)
| 參數 | 說明 | 預設值 / 必填 |
|---|---|---|
number |
要尋找餘數的**被除數**(Dividend)。可以是數值常數、資料行或度量值。 | 必填 |
divisor |
用於相除的**除數**(Divisor)。**不能為 0**。可以是數值常數、資料行或度量值。 | 必填 |
二、 核心功能說明
MOD 函數傳回兩數相除後的餘數。數學計算原理可視為:MOD(n, d) = n - d * INT(n / d)。
在 Power BI 報表建模中,常見的實務應用包括:
- 奇偶數與分組判斷:使用
MOD(RowIndex, 2)判斷奇偶列以建立視覺化隔行變色或分流邏輯。 - 單位裝箱拆解:例如總商品數為 25,每箱裝 6 件,透過
MOD(25, 6)可求得零散剩餘 1 件。 - 時間週期轉換:將總秒數或分鐘數轉換為「剩餘秒數」或「幾小時幾分」。
三、 實用 DAX 範例
範例 1:基本餘數計算與正負號表現
直接計算不同數值組合的餘數,注意傳回值的正負號會與除數相同:
// 9 除以 3 恰好整除,傳回 0
ModZero = MOD(9, 3)
// 7 除以 3 餘數為 1
ModPositive = MOD(7, 3)
// 除數為負數 (-3) 時,傳回結果與除數同號,傳回 -2
ModNegativeDivisor = MOD(7, -3)
範例 2:判斷訂單編號或項目的奇偶數 (Odd / Even)
搭配 IF 函數建立計算行,判斷流水號為奇數或偶數:
// 建立計算行:判斷 OrderID 是奇數還是偶數
IsOddOrEven =
IF(
MOD('Sales'[OrderID], 2) = 0,
"偶數",
"奇數"
)
範例 3:動態安全防錯與包裝拆算
計算產品出貨時裝滿大箱後剩餘的散裝數量,並搭配 IF 避免除數為零導致的錯誤:
// 計算剩餘未滿一箱的零散商品數量
LooseItems =
VAR TotalQty = 'Inventory'[TotalQuantity]
VAR BoxCapacity = 'Inventory'[ItemsPerBox]
RETURN
IF(
BoxCapacity > 0,
MOD(TotalQty, BoxCapacity),
BLANK()
)
四、 常見陷阱與注意事項
⚠️ 注意事項 1:除數 (divisor) 不能為零
若第二個參數
若第二個參數
divisor 為 0,DAX 會傳回錯誤或被視為無效運算。在動態數據資料列中,建議務必搭配 IF 或 DIVIDE 概念檢測除數是否為零。
⚠️ 注意事項 2:結果的正負號與除數相同
MOD 的結果符號與除數(divisor)一致,而非被除數。例如 MOD(-5, 3) 傳回 1,而 MOD(5, -3) 則會傳回 -1。這點與某些程式語言(如 C# 或 Java 中的 % 運算子)的行為有所不同,需特別留意。
五、 相關函數推薦
DIVIDE:執行安全除法,自動處理除以 0 的情況並傳回指定替代值。INT:將數值無條件捨去取整數,常與 MOD 搭配計算商數。QUOTIENT:傳回兩數相除後的整數商數(捨去餘數)。ROUND:將數字四捨五入至指定的位數。
六、 官方文件連結
想進一步瞭解微軟官方說明與 DAX 語法細節,可參考:
留言
張貼留言