VAR

將表達式的結果儲存為具名變數,然後可以當做自變數傳遞至其他量值表達式。 一旦計算變數表達式的結果值之後,即使變數在另一個表達式中參考,這些值也不會變更。

語法

VAR <name> = <expression>  

參數

術語 定義
name 變數的名稱(標識元)。
不支援分隔符。 例如,『varName』 或 [varName] 會導致錯誤。
支援的字元集:a-z、A-Z、0-9。
0-9 無效作為第一個字元。
__ (雙底線)可以做為標識碼名稱的前置詞。
不支援其他特殊字元。
不允許保留關鍵詞。
不允許現有數據表的名稱。
不允許空白空白空格。
expression 會傳回純量或數據表值的DAX運算式。

傳回值

包含表達式自變數結果的具名變數。

言論

  • 當做自變數傳遞至 VAR 的運算式可以包含另一個 VAR 宣告。

  • 參考變數時:

    • 量值不能參考在量值表達式外部定義的變數,但可以參考表達式內定義的功能性範圍變數。
    • 變數可以參考量值。
    • 變數可以參考先前定義的變數。
    • 數據表變數中的數據行無法透過 TableName[ColumnName] 語法來參考。
  • 如需使用 VAR 時的最佳做法,請參閱 使用變數來改善 DAX 公式

  • 若要深入瞭解在 DAX 查詢中使用 VAR 的方式,請參閱 DAX 查詢

若要在不使用變數的情況下計算逐年成長的百分比,您可以建立三個不同的量值。 第一個量值會計算銷售金額的總和:

Sum of SalesAmount = SUM(SalesTable[SalesAmount])  

第二個量值會計算前一年的銷售額:

SalesAmount PreviousYear =
    CALCULATE([Sum of SalesAmount],
    SAMEPERIODLASTYEAR(Calendar[Date])
    )  

然後,您可以建立第三個量值,結合其他兩個量值來計算成長百分比。 請注意,SalesAmount 量值的總和用於兩個位置:先判斷是否有銷售,然後再一次計算百分比。

Sum of SalesAmount YoY%: = 
    IF([Sum of SalesAmount] ,  
        DIVIDE(([Sum of SalesAmount] – [SalesAmount PreviousYear]), [Sum of SalesAmount])
    )  

藉由使用變數,您可以建立計算相同結果的單一量值:

YoY% =
  VAR Sales = 
      SUM(SalesTable[SalesAmount])  
  VAR SalesLastYear =
      CALCULATE ( SUM ( SalesTable[SalesAmount] ), SAMEPERIODLASTYEAR ( 'Calendar'[Date] ) )

  return if(Sales, DIVIDE(Sales – SalesLastYear, Sales))  

藉由使用變數,您可以取得相同的結果,但以更易讀的方式取得。 而且,由於表達式的結果會儲存在變數中,因此可以大幅改善量值效能,因為它不需要每次使用時重新計算。

使用變數來改善DAX公式
DAX 查詢