共用方式為


使用 SELECTEDVALUE,而不是使用 VALUES

身為數據模型工具,有時候您可能需要撰寫 DAX 表示式,以測試數據行是否由特定值篩選。

在舊版的 DAX中,使用涉及三個 DAX 函式的模式,可以安全地達成這項需求:IFHASONEVALUEVALUES。 下列量值定義提供範例。 其會計算銷售稅額,但僅計算對澳洲客戶的銷售。

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 函式。 當沒有篩選或多個篩選套用至數據行時,會傳回替代結果值。