共用方式為


使用 SELECTEDVALUE,而不是使用 VALUES

身為數據建模師,有時候您可能需要撰寫 DAX 表示式,以測試數據欄是否由特定 value篩選。

在 earlier 版 DAX中,使用涉及三個 DAX 函式的模式,可以安全地達成這項需求:IFHASONEVALUEandVALUES。 下列 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。