Power BI DAX 入門筆記


  1. 說明
  2. DAX 語法
    1. Calculate
      1. With Filter
      2. 區別總體與個別
      3. 分組資料的極值項目
    2. VAR
    3. Rankx
    4. Related
    5. Containsstrnig
    6. DAX 應用
  3. 參考資料

DAX 是學習 Power BI 從初級進入中級的門檻,但學習門檻上不是那麼直覺。但藉由筆記的方式逐一攻略與紀錄教學上的範例,期待能力克 DAX ,讓使用 Power BI 的技能更進一階。

logo

說明

DAX 語法

Calculate

ANZ Revenue =
CALCULATE(
    [Revenue],
    Customer[Country-Region]
        IN {
        "Australia",
        "New Zealand"
    }
)

With Filter

Revenue High Margin Products =
CALCULATE(
    [Revenue],
    FILTER(
        'Product',
        'Product'[List Price] > 'Product'[Standard Cost] * 2
    )
)

MS Learn

區別總體與個別

❌ 錯誤範例

Customer Segment =
VAR CustomerRevenue = SUM(Sales[Sales Amount])
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

✔ 正確範例

Customer Segment =
VAR CustomerRevenue = CALCULATE(SUM(Sales[Sales Amount]))
RETURN
    IF(CustomerRevenue < 2500, "Low", "High")

MS Learn

分組資料的極值項目

MaxHP = CONCATENATEX(
    CALCULATETABLE('Pokemon', Pokemon[HP] = MAX('Pokemon'[HP]))
    ,'Pokemon'[Name_CT]
    , ",")

Power BI Desktop 2021 Sep 以後才支援在 Filter 使用彙總函式

VAR

使用變數能減低重複運算的造成的效能浪費

Revenue YoY % =
var RevenuePriorYear =
    CALCULATE(
        [Revenue],
        SAMEPERIODLASTYEAR('Date'[Date])
    )
return
    DIVIDE(
        [Revenue] - RevenuePriorYear,
        RevenuePriorYear
    )

MS Learn

Rankx

計算資料欄的排名,但總計不顯示值。

Product Quantity Rank =
IF(
    HASONEVALUE('Product'[Product]),
    RANKX(
        ALL('Product'[Product]),
        [Quantity],
        ,
        ,
        DENSE
    )
)

MS Learn

Containsstrnig

可以用於新建 Measures 或者 Columns ,檢查字串或者欄位中的字串是否包括特定字串。

MSDocs - containsstring

DAX 應用

參考資料