📊

Power BI DesktopのフィルタリングとExcelのフィルタリングとの違い

2024/02/26に公開

はじめに

Power BI Desktopの中で、2箇所ほどExcelと同じ操作で列に対しフィルターをかけることができる。1箇所目はPower Query内で、もう1箇所はデータビュー内である。
3者のそれぞれのフィルタリングした後の挙動にどういう違いがあるのか?

Power BI DesktopとExcelのフィルタリングの違い

Power Query:データが完全に削除される

フィルタリングで除外されたデータはテーブルから消え、以降の計算に含まれなくなる

Power BI Desktopのデータビュー:非表示になるだけ

フィルタリングで除外されたデータはデータビュー上で非表示になるが、レポートページはデータビュー上のフィルタリングに影響されず、結果が変わらない。
ただし、データビューの右クリックメニューで「テーブルのコピー」をする場合、フィルタリングで除外されたデータはコピーされない。

Excel:非表示になるが、集計されるかどうかは関数次第

見た目上ではフィルタリングで除外されたデータはシート上で非表示になるが、集計する際に使う関数によって非表示のデータも集計される。
例:

  • SUM:非表示のデータも集計する
  • SUBTOTAL:非表示のデータは集計しない

各機能の詳細動作

Power Queryのフィルタリング

フィルターのかけ方

クエリ編集画面を開くと、クエリテーブルの各列のヘッダーの横に「▼」ボタンがあり、それをクリックするとフィルターパネルが開き、いろんな種類のフィルターを設定することができる。

PowerQueryフィルター

※システムが用意してくれているスタンダードなフィルターは列の型によって異なる。詳細は以下をご参考ください。

https://youtu.be/Ukjx_5o0X6c

フィルタリング後の挙動

フィルタリング前の初期テーブルが以下である。

PowerQuery初期テーブル

「Alphabet」列をA~Dに限定すると、以下のようになる。

PowerQueryフィルター後

この時点でフィルタリングされたE~Gの行のデータはテーブルから削除されている。そのため、「Number」列の合計を取ると、結果が4になる。

PowerQueryフィルター後合計

Power BI Desktopのデータビューのフィルタリング

フィルターのかけ方

場所がクエリ編集画面からデータビューになること以外はPower Queryと同様である。
各列のヘッダーの横に「▼」ボタンをクリックするとフィルターパネルが開く。またシステムが用意してくれているスタンダードなフィルターは列の型によって異なる。

データビューフィルター

フィルタリング後の挙動

フィルタリング前の初期テーブルが以下である。

データビュー初期テーブル

またレポートページで「Number」列を合計したカードの値は以下である。

データビュー合計

「Alphabet」列をA~Dに限定すると、以下のようになる。

データビューフィルター後

この状態でレポートページの「Number」列を合計したカードの値を確認すると、7のままなので、データビューのフィルタリング操作はレポートに影響がないことが分かる。

データビュー合計

ただし、以下のようにデータビューで右クリックし、「テーブルのコピー」をしてExcelに貼り付けてみると、フィルタリング後の表がコピーされていることが分かる。

データビューテーブルコピー

データビューテーブルペースト

Excelのフィルタリング

テーブルとして定義せず、セルに普通にデータを入力した場合、該当範囲のフィルターをONにすると、Power Queryと同じようなフィルターウィンドウが出てくる。Excelの列自体には型という概念がないが、その列のセルの型に合わせて選べるフィルターの種類が変わるのはPower Queryと同様である。

Excelフィルター

テーブルとして定義した場合、自動で各列のフィルター機能がONになる。

Excel定義テーブルフィルター

フィルタリング後の挙動

テーブルとして定義していない場合

フィルタリング前の初期テーブルが以下である。「Number」列(E列)の合計は7である。

Excel初期テーブル

「Alphabet」列をA~Dに限定すると、以下のようになる。
フィルタリングされた行は非表示になっているが、シート上には存在している。
そのためSUM関数で列の合計を計算した場合、非表示のE~Gのデータも計算に入ってしまい、結果は7のままである。
ただし、SUBTOTAL関数を使うとのE~Gのデータは集計から除外されるので、結果は4になる。

Excelフィルター後

テーブルとして定義した場合

テーブルとして定義していない場合と同じ結果である。
フィルタリング前の初期テーブルが以下である。「Number」列(E列)の合計は7である。

Excel初期定義テーブル

「Alphabet」列をA~Dに限定すると、以下のようになる。
同じ様に、フィルタリングされた行は非表示になっているが、シート上には存在している。
SUM関数で列の合計を計算した場合、非表示のE~Gのデータも計算に入ってしまい、結果は7のままである。SUBTOTAL関数を使うとのE~Gのデータは集計から除外されるので、結果は4になる。

Excel定義テーブルフィルター後

テーブルに集計行を追加した場合も、SUBTOTALが使われるので、フィルタリングされた行は集計から除外される。

Excel定義テーブルテーブルフィルター後集計

参考

https://www.youtube.com/watch?v=Ukjx_5o0X6c

BIによる業務改善推進

Discussion