使用 SELECTEDVALUE 而非 VALUES
身為數據建模者,有時候您可能需要撰寫 DAX 運算式來測試資料行是否依特定值接受篩選。
在舊版的 DAX 中,您需要藉由使用包含三個 DAX 函式的模式,以確保達成這項需求:IF、HASONEVALUE 和 VALUES。 下列量值定義會提供範例。 其會計算銷售稅額,但僅計算對澳洲客戶的銷售。
Australian Sales Tax =
IF(
HASONEVALUE(Customer[Country-Region]),
IF(
VALUES(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
)
在此範例中,只有當可以在目前篩選內容中看見 Country-Region 資料行的單一值時,HASONEVALUE 函式才會傳回 TRUE。 當為 TRUE 時,VALUES 函式會與常值文字 "Australia" 進行比較。 當 VALUES 函式傳回 TRUE 時,Sales 量值會乘以 0.10 (代表 10%)。 如果 HASONEVALUE 函式傳回 FALSE (因為有一個以上的值篩選資料行),則第一個 IF 函式會傳回 BLANK。
使用 HASONEVALUE 是一種防禦性技巧。 這是必需的,因為可能會有多個值篩選 Country-Region 資料行。 在此情況下,VALUES 函式會傳回多個資料列的資料表。 而將多個資料列的資料表與純量值進行比較,則會產生錯誤。
建議
建議您使用 SELECTEDVALUE 函式。 此函式具有與本文中所述模式相同的結果,但更簡練且更有效率。
使用 SELECTEDVALUE 函式時,會重寫範例量值定義。
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
提示
您可以將「替代結果」值傳遞至 SELECTEDVALUE 函式。 當沒有任何篩選 (或多個篩選) 套用至資料行時,就會傳回替代結果值。
相關內容
- 學習路徑:在 Power BI Desktop 中使用 DAX
- 有任何問題嗎? 嘗試在 Power BI 社群提問
- 有任何建議嗎? 貢獻想法來改善 Power BI