Power BIのDAXには、データのフィルター処理を柔軟に操作するための関数が複数あり、その中でも REMOVEFILTERS
と KEEPFILTERS
は特定の場面でフィルターを除去したり、逆にフィルターを維持したりするために使用されます。
これらの関数の使い方を簡単にまとめます。
REMOVEFILTERSの使い方
REMOVEFILTERS
関数は、特定の列やテーブルにかかっているフィルターを削除して、すべてのデータを参照するようにします。
通常、集計関数や計算を行う際にフィルターの影響を排除したい場合に利用されます。
基本構文
REMOVEFILTERS([ColumnName])
ColumnName
の部分には、フィルターを削除したい列やテーブルを指定します。
例えば、売上データを分析する際に、ブランドごとの絞り込みを一旦解除して全体の売上を集計したい場合に使用できます。
使用例
売上データ(Sales
テーブル)から、ブランド別の売上を無視して全体の売上を集計する計算を行いたいとします。
Total Sales without Brand Filter = CALCULATE(SUM(Sales[Amount]), REMOVEFILTERS(Sales[Brand]))
このようにすると、Sales[Brand]
にかかっているフィルターを無視して、全体の売上合計を取得できます。
この方法は特定の条件下での全体値を確認したい場合に便利です。
KEEPFILTERSの使い方
KEEPFILTERS
関数は、現在のフィルターコンテキストを維持しつつ、他のフィルター条件を追加する際に使用します。
特定のフィルターを維持しながら計算を行いたい場面で役立ちます。
基本構文
KEEPFILTERS([ColumnName])
ColumnName
の部分にフィルターを適用したい列やテーブルを指定します。
この関数を使うことで、現在のフィルターが適用されたまま、さらに別のフィルターを追加できます。
使用例
例えば、特定の月とブランドにおける売上を計算し、現在のフィルターがかかった上で、さらに特定の品目に絞り込みたい場合です。
Filtered Sales with Additional Filter =
CALCULATE(
SUM(Sales[Amount]),
KEEPFILTERS(Sales[ProductCategory] = "Electronics")
)
この計算では、Sales[ProductCategory] = "Electronics"
のフィルターを追加し、既存のフィルターコンテキストに組み込みます。
これにより、現在のフィルター条件がそのまま残りつつ、新しいフィルターを追加した結果を計算できます。
REMOVEFILTERSとKEEPFILTERSの使い分け
- REMOVEFILTERS
特定のフィルターを解除して計算を行いたい場合に適しています。
全体の傾向を把握したい時や、フィルターの影響を一旦無視して集計を行う際に使用します。 - KEEPFILTERS
現在のフィルターコンテキストを保ちつつ、さらに追加のフィルター条件を設けたい場合に使用します。特定の条件を精査したい場面や、フィルターの影響を残しつつさらに限定条件を付ける場合に便利です。
活用例
REMOVEFILTERSを使って全体売上を把握
ある月の特定のブランドに関する売上データを見ているが、全体の売上との比較が必要な場合、REMOVEFILTERS
を使ってブランドのフィルターを無視した全体売上を表示できます。
Total Sales without Brand Filter = CALCULATE(SUM(Sales[Amount]), REMOVEFILTERS(Sales[Brand]))
KEEPFILTERSを使って特定のフィルターを維持しながらさらに条件を追加
月別とブランド別のフィルターを適用した状態で、さらに「品目:電子機器」に絞り込み、合計を計算したい場合です。
Filtered Sales with Additional Filter =
CALCULATE(
SUM(Sales[Amount]),
KEEPFILTERS(Sales[ProductCategory] = "Electronics")
)
まとめ
REMOVEFILTERS
を使うと、特定のフィルターを解除して全体データを参照できます。KEEPFILTERS
は現在のフィルターコンテキストを維持しながら、別のフィルター条件を追加したい場合に有効です。
どちらもフィルターの影響をコントロールするための重要な関数であり、状況に応じて使い分けることで、柔軟なデータ分析が可能になります。