Power BI DAX MEDIANX 函數:逐列評估並計算中位數 (Iterative Median) 完整指南

Power BI DAX MEDIANX 函數:逐列評估並計算中位數 (Iterative Median) 完整指南

📅 發布日期:2026-09-01 🏷️ 分類:統計函數 DAX 函數
💡 函數速查卡
函數名稱 MEDIANX
所屬類別 統計函數 (Statistical functions)
傳回類型 十進位數字 (Decimal Number) 或整數 (Integer)
常用頻率 ★★★☆☆

在 Power BI / Analysis Services 的 DAX 數據建模中,MEDIANX 是一個反覆運算器(Iterator)函數。它會遍歷指定資料表的每一列(Row-by-row),針對每一列評估運算式(Expression),最後計算並傳回該結果集中的**中位數(Median)**。相較於只能對單一資料行計算的 MEDIANMEDIANX 允許在計算中位數之前先執行複雜的數學運算或多欄位組合計算。

一、 基本語法與參數

MEDIANX 函數的標準 DAX 語法結構如下:

MEDIANX(<table>, <expression>)
參數 說明 預設值 / 必填
table 要對其進行逐列評估的資料表或傳回資料表的 DAX 運算式(例如 FILTERRELATEDTABLE)。 必填
expression 要針對資料表每一列進行評估的運算式,結果必須為數值型態。 必填

二、 核心功能說明

MEDIANX 的運作機制為:先為指定資料表(table)中的每一列計算參數二(expression)的值,接著將所有算出之數值進行排序,並找出中間位置的數值:

  • 若數值總個數為**奇數**,則直接取最中間的數值。
  • 若數值總個數為**偶數**,則取最中間兩個數值的平均值(Mean)。

在 Power BI 報表建模中,常見的實務應用包括:

  • 計算包含跨欄位動態運算後的產品銷售額中位數(例如 [UnitPrice] * [Quantity])。
  • 結合條件篩選,計算特定類別或特定客戶群體的績效中位數,排除極端值對平均值的干擾。
  • 計算每個客戶在特定時間區間內的平均消費額之中位數(聚合後再算中位數)。

三、 實用 DAX 範例

範例 1:逐列計算單價乘以數量後的中位數 (Row-by-Row Calculation)

針對銷售表中的每一筆交易,先計算折後金額,再求出所有筆數的中位數:

// 建立度量值:計算每筆訂單實際金額的中位數
MedianTransactionAmount = 
MEDIANX(
    'Sales',
    'Sales'[UnitPrice] * 'Sales'[Quantity] * (1 - 'Sales'[Discount])
)

範例 2:搭配 FILTER 進行特定條件過濾

僅針對運送時間大於 0 的訂單,計算運送天數的中位數:

// 建立度量值:計算有效訂單運送天數的中位數
MedianDeliveryDays = 
MEDIANX(
    FILTER(
        'Orders',
        'Orders'[ShipDate] > 'Orders'[OrderDate]
    ),
    INT('Orders'[ShipDate] - 'Orders'[OrderDate])
)

範例 3:計算客戶層級聚合後的中位數 (Nested Aggregation)

先算出每位客戶的總銷售額,再統計「所有客戶銷售額」的中位數:

// 建立度量值:評估每個客戶總銷售額的中位數水準
MedianCustomerSales = 
MEDIANX(
    VALUES('Customer'[CustomerID]),
    [Total Sales]
)

四、 常見陷阱與注意事項

⚠️ 注意事項 1:僅包含數字與邏輯值(視為數字)
MEDIANX 只會對評估結果為數字的資料列進行排序與計算。若運算式傳回文字或非數值資料,該資料列將被忽略或引發型態轉換錯誤。
⚠️ 注意事項 2:空白值 (BLANK) 與 0 的差異
若運算式結果傳回 BLANK()MEDIANX 在計算時會自動忽略該資料列;但若結果為數字 0,則會被納入中位數的排序與計算中,進而影響整體統計結果。
⚠️ 注意事項 3:大型資料集的效能影響
作為 Iterative 函數,MEDIANX 需要先在記憶體中對所有列計算結果並進行排序。當傳入的資料表包含數百萬列時,計算中位數的開銷會顯著高於平均值(AVERAGEX),使用時宜特別注意資料規模。

五、 相關函數推薦

  • MEDIAN:計算指定資料行中所有數字的中位數。
  • AVERAGEX:計算針對資料表逐列評估運算式後的算術平均值。
  • PERCENTILEX.EXC:計算資料表逐列運算後的指定百分位數(不包含邊界)。
  • PERCENTILEX.INC:計算資料表逐列運算後的指定百分位數(包含邊界)。

六、 官方文件連結

想進一步瞭解微軟官方說明與 DAX 語法細節,可參考:

留言

相關文章 / 薪資情報

文章載入中...

你可能有興趣

精選文章 / 推薦情報

文章載入中...