Power BI DAX 入門筆記

2020-09-19

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 應用

參考資料