使用 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
)
)
在此範例中,只有當目前篩選內容中顯示 國家/地區 數據行的單一值時,HASONEVALUE 函式才會傳回 TRUE。 當 TRUE時,VALUES 函數會與字串 "Australia" 進行比較。 當 VALUES 函式傳回 TRUE時,Sales 量值會乘以 0.10(代表 10%)。 如果 HASONEVALUE 函式傳回 FALSE,因為多個值會篩選資料行,則第一個 IF 函式會傳回 BLANK。
使用 HASONEVALUE 是防禦技術。 這是必要的,因為多個值可能會篩選 國家/地區 數據行。 在此情況下,VALUES 函式會傳回多個數據列的數據表。 比較多列的數據表與純量值會導致錯誤。
建議
建議您使用 SELECTEDVALUE 函式。 其可達成與本文所述模式相同的結果,但更有效率且更優雅。
使用 SELECTEDVALUE 函式,現在會重寫範例量值定義。
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
提示
可以將 替代結果 值傳遞至 SELECTEDVALUE 函式。 當沒有篩選或多個篩選套用至數據行時,會傳回替代結果值。
相關內容
- 學習路徑:在 Power BI Desktop 中使用 DAX
- 有任何問題嗎? 嘗試詢問 Power BI 社群。
- 有任何建議嗎? 提出想法以改善 Power BI