DAX‐FILTERに関する関数 - aktnk/til GitHub Wiki

DAXでFILTERに関する関数は沢山あるhttps://learn.microsoft.com/ja-jp/dax/filter-functions-dax

CALCULATE(式,フィルタ1,フィルタ2,…)

  • 指定したフィルタを掛けて、指定した式を評価
  • スライサーやフィルタ等のUIを使ったり、グラフやテーブル内の項目を選択することでフィルターをかけることができる。それ以外にも、CALCULATE()を使うことで、DAX式でフィルターをかけることができる
  • なお、複数のテーブルがある場合、行コンテキストはリレーションシップをフォローされないことがある。そのため、フィルターが掛からない。このような場合にフィルターをかけるにはCALCULATE(式のみ)を使い、行コンテキストでフィルタを反映させることができる。また、メジャーを使うことで、CALCULATE()を記載しなくても、行コンテキストでフィルターをかけることができる(メジャーではCALCULATE()関数が自動的に付与されている・・・?)。
  • 詳細はhttps://learn.microsoft.com/ja-jp/dax/calculate-function-dax
  • (使用例1)全売上に対する行コンテキスト毎の割合を計算する場合
    1. 新しいメジャーで売上ALL = CALCULATE( SUM('販売実績'[売上]), ALL('販売実績') ) を作成
    2. 新しいメジャーで全体に対する割合 = DIVIDE( SUM('販売実績'[売上]), [売上ALL] )で算出可能
  • (使用例2)スライサーで選択した範囲で、全売上に対する行コンテキスト毎の割合を計算する場合
    1. 新しいメジャーで売上ALL = CALCULATE( SUM('販売実績'[売上]), ALLSELECTED('販売実績') ) を作成
    2. 新しいメジャーで全体に対する割合 = DIVIDE( SUM('販売実績'[売上]), [売上ALL] )で算出可能

SELECTEDVALUE(列,代替値)

  • 指定した列が、スライサーなどで1つだけ選択されている場合、その値を返す。選択されていない場合もしくは複数選択されている場合は、代替値として指定した値を返す
  • IF(HASONEVALUE(<列名>), VALUES(<列名>), <代替値>)に相当する値を返す。
  • 詳細はhttps://learn.microsoft.com/ja-jp/dax/selectedvalue-function-dax
  • (使用例)グラフのタイトルにスライサーで選択した値を使う
    1. 新しいメジャー:[選択した値]をスライサーで選択した値と定義する 選択した値 = SELECTEDVALUE('テーブル名'[列名]," 全ての")
    2. 新しいメジャー:[グラフタイトル]を選択した値を使って定義する グラフタイトル = COMBINEVALUES(" 総売上:",[選択した値],"年")
    3. グラフのタイトルのテキスト欄にある[fx]を選択し、[スタイルの書式設定]を[フィールド値]、[基準にするフィールド]を上記で定義したメジャー[グラフタイトル]を指定する
⚠️ **GitHub.com Fallback** ⚠️