
【PowerBI初級編】第7回 DAX関数を使いこなそう②:月フィルタの作成
こんにちは!noteをお読みいただきありがとうございます。
BX(ビジネストランスフォーメーション)事業本部note運営の鈴木です。
前回は簡単なDAX関数の作り方をご紹介しました。
今回はPowerBIでのフィルタ機能の使い方に加え、
多対多リレーションで困ったとき、DAX関数を使って切り抜ける方法をご紹介したいと思います。
前回よりレベルアップしていますが、つかいこなせればとっても便利になります。
今回も最後までお付き合いいただけますと幸いです。
では、始めましょう!
1.月フィルタの作り方
1.1 スライサー機能
Power BIにはスライサー機能というものがあります。
スライサー機能はExcelなどでの絞り込み機能に近いもので、
見たい特定のデータのみをフィルタリングして表示できるようになります。
例えば、売上データを特定の月や期間だけに絞り込んで分析したい場合、スライサーで該当の期間を選択することで、その間のデータのみを簡単に見ることができるようになります。
売上だけでなく、より細かい単位でデータを見たいときや、モニタリングしている組織が多すぎて見辛い時などもスライサーを活用すると便利です。
1.2 スライサーの追加方法
スライサーの追加は簡単です。
いつも通り、新しいビジュアルを立ち上げたら、「スライサー」を選択し、
絞り込みに使いたいデータをクリックするだけです。
使用するデータはフィルタリングをしたいビジュアルで使っているテーブルから使いましょう
スライサーは「タイル」や「ドロップダウン」など様々なビジュアルが選べます。

その場や好みに応じて使いやすいものを選択すると良いでしょう。
今回はタイトルの帯の上に配置するため、ドロップダウンを選択しました。

前回作ったグラフも少し見やすくするために、ビジュアルの近くに補助のスライサーを作成しておきましょう。

一ページ上に複数個作っても大丈夫です。
1.3 スライサーの作用を確認・編集
特定のビジュアルにどんなスライサーが作用しているのかを確認したい場合は、ビジュアルを選択したときに出てくる右上にスライサーのマークにマウスオーバーしましょう。

もし、作用してほしくないフィルターが作用していた場合や、かけたいフィルターがかかっていなかった場合は、フィルターを選択し、「書式」リボンから「相互作用を編集」で詳細なフィルタリング設定ができます。

編集ができます。
もし、ページをまたいでスライサーを使いたいときは「スライサーの同期」という機能を使うことで、複数ページでスライサー機能を有効にできます。
(「表示」タブの中にあります。)
ただし、「スライサーの同期」でサポートされるのは1つのフィールドのみですのでお気を付けください。
2.フィルタとリレーション


2.1多対多リレーション
複数ビジュアルにわたってスライサーを作用させたい場合、作用させたいビジュアル同士で使用しているデータテーブルをリレーションしておく必要があります。
リレーションのキーとなる値は基本的に何を使っても構いません。
しかし、スライサーで使用しているリレーションをしようとするとこんな画面が出現することがあります。

これは多対多リレーションをしようとしたときに出てくる画面です。
多対多リレーションとはこのような状況です。
たとえば、ビストロ吉田の顧客データとワインの注文履歴を繋ごうとしたとき、そのキーに「日時」を選んだとします。

両方のテーブルに同じ日付が複数存在しているのがわかるでしょうか。
画像のデータでは「4月1日」と「4月7日」が互いのテーブルに2行ずつ存在していますね。第二回でサンプルデータをダウンロードしていただいた方はわかると思いますが、画像外でも同様に同じ日の複数のデータを互いに保持しています。
つまり、多対多リレーションとは、リレーションをしようとしているキーに同じ値が互いに複数存在している状態でのリレーションを指します。
Power BIでは、リレーションは一対多を基本としており、多対多のリレーションは以前は推奨されていませんでした。
現在では注意して使いましょうという形になってはいますが、未だに懸念点がいくつかあり、おすすめはできません。
データを作る段階で多対多リレーションが起きない構造にすることが望ましいと個人的には思います。
実際、この連載で使用しているデータでは、多対多リレーションを作成せずとも、月フィルタの連動のためのリレーションが組めるように設計してあります。
しかし、どうしても多対多リレーションにしかならないんだ!という場面もあるかと思います。
そんな時は中間テーブルを作るという回避策を取りましょう。
2.2 回避策:中間テーブル
中間テーブルによる回避策とは、多対多リレーションが発生してしまうテーブルの間に、「マスタ」を作ってしまう方法です。
「マスタ」とは互いのテーブルのキーの中から一意の値を抜き出して作るテーブルで、この「マスタ」を間に挟むことで、発生するリレーションを一対多にすることができます。

中間テーブルの作り方にはいくつか方法があります。
Excel作業時点で作成してしまってもよいですし、
パワークエリを使用して、クエリの追加>テーブル作成>キーとなる項目以外を削除することでも作成が可能です。
今回は日付列限定にはなりますが、モデルビューの「新しいテーブル」より、DAX関数を入力して、一発で日付マスタを作成する方法をお伝えします。
日付マスタを作りたいときに活躍するのが以下の2つの関数です
CALENDER関数:最初と最後の日を指定することでカレンダーを作成する
CALENDARAUTO関数:モデル内のデータに基づき、自動的に作成するカレンダーの期間を設定する。
今回はCALENDER関数の方を使ってみましょう。
CALENDER関数は以下のように作成するカレンダーの開始日と終了日を指定することができます。
=CALENDAR(開始日,終了日)
=CALENDAR(“2024/04/01″,”2025/3/31”)
また、開始日、終了日をすでにあるデータから引用することも可能です。今回は注文履歴の日付から作成してみたいと思います。


あとはこれを間に挟めば、こんな感じで多対多リレーションになってしまうデータを、一対多のリレーションでつなぐことができます。

画像のDAX関数はご自身でやってみたい日付列に入れ替えることで使用できますのでご利用ください。
3. まとめ
今回は月フィルタの作成からちょっと発展して多対多リレーションの解説まで行いました。
日付マスタは多対多リレーションの回避のみならず、データがない月でも欠落なしに日付軸を作成したいという場面でも大活躍します。
Power BIで日付を扱うときは最初に日付マスタを作成してしまうのもよいかもしれません。
いよいよ次回は最終回です。
最後までお付き合いいただけますと幸いです。
では、またお会いしましょう!
前回記事はこちら
▽データ活用支援サービス▽
パーソルビジネスプロセスデザイン(PBD)では、BI導入支援をはじめとした、データ活用支援サービスを提供させていただいております。
基盤構築から設計~開発~運用まで一気通貫で貴社のデータ活用をご支援。
PBDが得意とする伴走型支援で、導入後の活かし方までサポートいたします。

Tableau, PowerBI, Looker Studioの無料テンプレート配布中
弊社公式サイトでは、各種BIツールの無料テンプレートを配布中です!
GA4レポート、ガントチャート、インサイドセールスの活動管理ダッシュボードなど、すぐに活用可能なサンプルを各種そろえております。
ダウンロードは下記URLよりお申し込みください。
●●●
パーソルビジネスプロセスデザイン ビジネストランスフォーメーション事業本部では、幅広いポジションで一緒に働く仲間を募集しています!
✉ サービスに関するお問い合わせ ✉
パーソルビジネスプロセスデザイン BX事業部
smkt_markegr_note@persol-pt.co.jp