【PowerBI】DAX関数ALLとALLSELECTEDの違いについて

こんにちはMJです!

Power BI を使いこなす上で、DAX(Data Analysis Expressions)によるフィルターコンテキストの制御は欠かせません。特によく使われる関数に「ALL」と「ALLSELECTED」等がありますが、これらは似ているようで、動作に明確な違いがあります。

今回はこの二つの関数について解説していきます。

ALL 関数とは?

概要

ALL関数は、指定したテーブルまたは列に適用されているすべてのフィルターを解除します。

 

構文

ALL(TableName)
or
ALL(TableName[ColumnName])
or
ALL(TableName[ColumnName1], TableName[ColumnName2])

テーブル名全体を指定すると、そのテーブルに適用されたすべてのフィルターを削除します。

1つ以上のカラムを指定すると、そのカラムに適用されたフィルターのみを削除し、他のカラムのフィルターは維持します。

 

使用例

  • 現在のフィルターを無視して、全体の合計を計算したいとき

 

ALLSELECTED 関数とは?

概要

ALLSELECTED関数は、関数で指定したカラムのフィルター(スライサーなど)を維持しつつ、他のカラムのフィルターを解除します。

 

構文

ALL(TableName)
or
ALL(TableName[ColumnName])
or
ALL(TableName[ColumnName1], TableName[ColumnName2])

テーブル名全体を指定すると、ユーザーがスライサーなどで選択したフィルターだけを維持し、残りのフィルターを削除します。

1つ以上のカラムを指定すると、そのカラムに対してユーザが選択したフィルタのみを維持し、残りのフィルターを削除します。

 

使用例

  • ユーザーの選択に基づく集計範囲全体を基準にした割合や比較をしたいとき

 

比較

特徴 ALL 関数
ALLSELECTED 関数
除去フィルター 全てのフィルターコンテキスト スライサーなど外部から適用されたフィルター
計算基準 全データセット ユーザが選択したデータセット
主な用途 全体に対する割合の計算 ユーザーの選択範囲内での割合の計算
特定製品の総売上高全体に対する割合 特定の年の総売上高に対する各月の割合

 

サンプル

サブカテゴリ別の売上データを使って、ALL関数とALLSELECTED関数の動作を確認してみます。

 

今回は、以下の 5 つのメジャーを用意しました。

  1. 00.売上合計:各サブカテゴリの売上合計を算出
  2. 01.売上合計(ALL):サブカテゴリのフィルターを無視し、全ての売上合計を算出
  3. 02.売上合計(ALLSELECTED):サブカテゴリのフィルターだけ適用した状態で売上合計を算出
  4. 01.売上%ALL関数を使用し、全体に対する割合を算出
  5. 02.売上%ALLSELECTED関数を使用し、全体に対する割合を算出

フィルターを指定せずに、全てのサブカテゴリを表示した場合、ALL関数を使ったメジャーもALLSELECTED関数を使ったメジャーも同じ結果になります。

 

サブカテゴリのフィルターを選択した場合、ALLSELECTED関数を使ったメジャーは、選択された項目に対して算出されます。一方、ALL関数を使ったメジャーは、フィルターを無視して全体に対して算出されます。

 

まとめ

この検証からわかるように、

  • ALL 関数:すべてのフィルターを無視して「全体」を取得するのに最適
  • ALLSELECTED 関数:ユーザーが選択した範囲に基づく分析(割合やランキングなど)に最適

目的に応じてこの 2 つを使い分けることで、Power BI の分析表現力はさらに向上します。ぜひ実践に取り入れてみてください。

 

BI製品のサポートはぜひKCMEで!

自然言語を使って簡単にデータの可視化ができるBIツール、ThoughtSpotの詳細はこちら

おすすめの記事