使用 SELECTEDVALUE,而不是使用 VALUES
身為數據建模師,有時候您可能需要撰寫 DAX 表示式,以測試數據欄是否由特定 value篩選。
在 earlier 版 DAX中,使用涉及三個 DAX 函式的模式,可以安全地達成這項需求:IF,HASONEVALUEandVALUES。 下列 measure 定義提供範例。 其會計算銷售稅額,但僅計算對澳洲客戶的銷售。
Australian Sales Tax =
IF(
HASONEVALUE(Customer[Country-Region]),
IF(
VALUES(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
)
在此範例中,只有當目前 filter 內容中可以看到 國家/地區 數據行的單一 value 時,HASONEVALUE 函式才會傳回 TRUE。 當 TRUE時,VALUES 函數會與字串 "Australia" 進行比較。 當 VALUES 函式傳回 TRUE時,Salesmeasure 乘以 0.10 (代表 10%)。 If HASONEVALUE 函式會傳回 FALSE,因為 valuefilters 列多於一個,firstIF 函式會傳回 BLANK。
使用 HASONEVALUE 是防禦技術。 這是必要的,因為可能在多個 valuesfilter國家/地區 欄中出現。 在此情況下,VALUES 函式會傳回多個數據列的數據表。 比較多個數據列的數據表與純量 value 會產生 error。
建議
建議您使用 SELECTEDVALUE 函式。 其可達成與本文所述模式相同的結果,但更有效率地 and 優雅。
使用 SELECTEDVALUE 函式,measure 定義範例被now重寫。
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
提示
可以將 替代結果傳遞至 SELECTEDVALUE 函式value。 當未套用任何 filters—or 多個 filters—於該欄位時,就會傳回替代結果 value。
Related 內容
- 學習 path:在 Power BI Desktop 中使用 DAX
- 有任何問題嗎? 嘗試詢問 Power BI 社群
- 有任何建議嗎? 貢獻想法以改善 Power BI