Power BI DAX MIN 函數:計算資料欄或兩運算式中的最小值完整指南
Power BI DAX MIN 函數:計算資料欄或兩運算式中的最小值完整指南
📅 發布日期:2026-09-20
🏷️ 分類:聚合函數 DAX 函數
💡 函數速查卡
| 函數名稱 | MIN |
|---|---|
| 所屬類別 | 聚合函數 (Aggregation functions) |
| 傳回類型 | 純量值(Scalar Value),類型取決於輸入資料(整數、十進位數、日期時間、字串或布林值) |
| 常用頻率 | ★★★★★ |
在 Power BI 與 Analysis Services 的 DAX 數據建模中,MIN 函數是用於取得指定資料行(Column)或兩個數值/運算式之間的**最小值**的核心聚合函數。除了常見的數值比較外,它也能處理日期、文字字母順序與布林值,廣泛應用於銷售最低價計算、最早交易日期查詢、臨界上限截斷(Cap Value)等業務場景。
一、 基本語法與參數
MIN 函數在 DAX 中支援兩種語法形式(單一欄位聚合 / 雙純量值比較):
-- 語法 1:計算單一欄位的最小值
MIN(<column>)
-- 語法 2:比較兩個運算式/純量值,並傳回較小者
MIN(<scalar1>, <scalar2>)
| 參數 | 說明 | 預設值 / 必填 |
|---|---|---|
column |
要尋找最小值的目標資料行(欄位參考)。可為數字、文字、日期或布林值。 | 必填(適用於語法 1) |
scalar1 / scalar2 |
兩個欲比較大小的純量運算式或常數。傳回兩者中較小的數值。 | 必填(適用於語法 2) |
二、 核心功能說明
MIN 會檢視資料行或傳入的運算式,並找出當前篩選內容(Filter Context)下的最小值。
在 Power BI 報表建模中,常見的實務應用包括:
- **最早日期查詢**:計算客戶的最早購買日期(
MIN(Sales[OrderDate]))。 - **優惠價格比較**:比較折扣價與原價,取較低者作為最終結帳價格。
- **數字上限控制 (Cap Value)**:透過雙參數語法設定預算上限或折扣上限,例如
MIN([CalculatedBonus], 5000)。 - **動態標頭與篩選顯示**:於報表標題中顯示當前篩選範圍內的第一個日期或最小值。
三、 實用 DAX 範例
範例 1:計算商品最低銷售單價與最早銷售日期
對數字欄位與日期欄位進行基礎聚合運算:
// 建立度量值:取得產品的最低銷售單價
MinUnitPrice = MIN('Sales'[UnitPrice])
// 建立度量值:取得當前篩選範圍內的最早訂單日期
FirstOrderDate = MIN('Sales'[OrderDate])
範例 2:使用雙參數運算式限定上限 (Cap Limit)
當需要比較兩個數值或為計算結果設定最高門檻(Cap)時,可直接傳入兩個參數:
// 建立計算行:比較實際成本與預算成本,取較低者
LowerCost = MIN('Projects'[ActualCost], 'Projects'[BudgetCost])
// 建立度量值:計算員工獎金,但上限為 10,000 元
CappedBonus = MIN([CalculatedBonus], 10000)
範例 3:跨資料表計算每筆交易列的最小值 (搭配 MINX)
若需要對逐行進行複雜運算後再求最小值,需改用迭代函數 MINX:
// 使用 MINX 逐行計算 (單價 * 折扣),並找出最低折扣金額
LowestDiscountedPrice =
MINX(
'Sales',
'Sales'[UnitPrice] * (1 - 'Sales'[DiscountRate])
)
四、 常見陷阱與注意事項
⚠️ 注意事項 1:BLANK() 與空列處理機制
當欄位中包含空白列(
當欄位中包含空白列(
BLANK())時,MIN 在進行聚合計算時會忽略空白列。但如果整欄皆為 BLANK(),則會傳回 BLANK()。在雙參數比較中(如 MIN(BLANK(), 5)),DAX 會將 BLANK() 視為 0 參與比較。
⚠️ 注意事項 2:布林值 (Boolean) 的比較差異:MIN vs MINA
MIN 不支援直接對包含布林值的欄位進行邏輯轉換(TRUE/FALSE);若需將 TRUE 視為 1、FALSE 視為 0 進行最小值計算,請使用 MINA 函數。
五、 相關函數推薦
六、 官方文件連結
想進一步瞭解微軟官方說明與 DAX 語法細節,可參考:
留言
張貼留言