DAX‐FILTERに関する関数 - aktnk/til GitHub Wiki
DAXでFILTERに関する関数は沢山あるhttps://learn.microsoft.com/ja-jp/dax/filter-functions-dax
- 指定したフィルタを掛けて、指定した式を評価
- スライサーやフィルタ等のUIを使ったり、グラフやテーブル内の項目を選択することでフィルターをかけることができる。それ以外にも、CALCULATE()を使うことで、DAX式でフィルターをかけることができる
- なお、複数のテーブルがある場合、行コンテキストはリレーションシップをフォローされないことがある。そのため、フィルターが掛からない。このような場合にフィルターをかけるにはCALCULATE(式のみ)を使い、行コンテキストでフィルタを反映させることができる。また、メジャーを使うことで、CALCULATE()を記載しなくても、行コンテキストでフィルターをかけることができる(メジャーではCALCULATE()関数が自動的に付与されている・・・?)。
- 詳細はhttps://learn.microsoft.com/ja-jp/dax/calculate-function-dax
- (使用例1)全売上に対する行コンテキスト毎の割合を計算する場合
- 新しいメジャーで
売上ALL = CALCULATE( SUM('販売実績'[売上]), ALL('販売実績') )
を作成 - 新しいメジャーで
全体に対する割合 = DIVIDE( SUM('販売実績'[売上]), [売上ALL] )
で算出可能
- 新しいメジャーで
- (使用例2)スライサーで選択した範囲で、全売上に対する行コンテキスト毎の割合を計算する場合
- 新しいメジャーで
売上ALL = CALCULATE( SUM('販売実績'[売上]), ALLSELECTED('販売実績') )
を作成 - 新しいメジャーで
全体に対する割合 = DIVIDE( SUM('販売実績'[売上]), [売上ALL] )
で算出可能
- 新しいメジャーで
- 指定した列が、スライサーなどで1つだけ選択されている場合、その値を返す。選択されていない場合もしくは複数選択されている場合は、代替値として指定した値を返す
-
IF(HASONEVALUE(<列名>), VALUES(<列名>), <代替値>)
に相当する値を返す。 - 詳細はhttps://learn.microsoft.com/ja-jp/dax/selectedvalue-function-dax
- (使用例)グラフのタイトルにスライサーで選択した値を使う
- 新しいメジャー:[選択した値]をスライサーで選択した値と定義する
選択した値 = SELECTEDVALUE('テーブル名'[列名]," 全ての")
- 新しいメジャー:[グラフタイトル]を選択した値を使って定義する
グラフタイトル = COMBINEVALUES(" 総売上:",[選択した値],"年")
- グラフのタイトルのテキスト欄にある[fx]を選択し、[スタイルの書式設定]を[フィールド値]、[基準にするフィールド]を上記で定義したメジャー[グラフタイトル]を指定する
- 新しいメジャー:[選択した値]をスライサーで選択した値と定義する