VAR

名前付き変数として式の結果を格納します。格納後、他のメジャー式に引数として渡すことができます。 ある変数式の結果の値が計算されたら、変数が別の式で参照される場合でも、その変数は変わりません。

構文

VAR <name> = <expression>  

パラメーター

用語 定義
name 変数の名前 (ID)。
区切り記号はサポートされていません たとえば、'varName' や [varName] ではエラーが発生します。
サポートされている文字セット: a-z、A-Z、0-9。
0-9 は最初の文字として使用できません。
__ (2 つの下線) は ID 名のプレフィックスとして使用できます。
その他の特殊文字は使用できません。
予約キーワードは使用できません。
既存テーブルの名前は使用できません。
空のスペースは許可されません。
expression スカラー値またはテーブル値を返す DAX 式。

戻り値

式の引数の結果を含む名前付き変数。

解説

  • VAR に引数として渡される式には別の VAR 宣言を含めることができます。

  • 変数を参照する状況:

    • メジャーはメジャー式の外で定義されている変数を参照できませんが、式内で定義されている関数スコープ変数を参照できます。
    • 変数はメジャーを参照できます。
    • 変数は、前に定義された変数を参照できます。
    • テーブル変数の列は TableName[ColumnName] 構文経由で参照できません。
  • VAR を使用する場合のベスト プラクティスについては、「変数を使用して DAX の数式を改善する」を参照してください。

  • DAX クエリ内での VAR の使用方法の詳細については、「DAX クエリ」を参照してください。

変数を使用せずに前年比成長率を計算するには、別個のメジャーを 3 つ作成できます。 この最初のメジャーでは売上高の合計が計算されます。

Sum of SalesAmount = SUM(SalesTable[SalesAmount])  

2 つ目のメジャーでは、前年の売上高が計算されます。

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

これで、他の 2 つのメジャーを組み合わせた 3 つ目のメジャーを作成し、成長率を計算できます。 Sum of SalesAmount メジャーが 2 か所で使用されていることにご注意ください。まず売上の有無が判断され、それから率が計算されます。

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

変数を使用することで、同じ結果を算出するメジャーを 1 つ作成できます。

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

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

変数の使用により、同じ結果が得られて、しかも読みやすくなります。 また、式の結果が変数に格納されるので、使用のたびに再計算される必要がないので、メジャーのパフォーマンスが大幅に向上します。

変数を使用して DAX の数式を改善する
DAX クエリ