仕事効率化

Power BI:中間テーブルを使ってリレーションシップを設定する方法を基本から解説

スポンサーリンク

 

この記事はこんな方におススメです
  • データ分析を始めたいが特に使うツールが決まっていない方
  • Power BIでどんなことができるか知りたい方
  • Power BIを使い始めたばかりで基本から学びたい方

▶ Power BIのインストールがまだの方は以下の投稿をご覧ください。

▶ Power BIでデータ項目を追加する方法は以下の投稿をご覧ください。

はじめに

異なるテーブル間で共通の項目がある場合、リレーションシップを設定しておくと便利です。リレーションシップを設定する方法は中間テーブルを使う場合と、多対多カーディナリティのリレーションシップを組む方法があります。今回は中間テーブルを使う方法を基本からご紹介します。

リレーションシップの設定

サンプルデータで実際に設定しながら説明していきましょう。A支店、B支店、C支店の日別の売上データを集計したテーブル(売上テーブル)とA支店、B支店、C支店の日別の来客数を合計したテーブル(来客数テーブル)があります。この2つのテーブルのリレーションシップの設定をすることにしましょう。

リレーションシップを設定する2つのテーブル

「売上テーブル」は1月4日~1月7日までのデータがありますが、1月6日のデータが抜けています。また支店によってはデータがない日があります。「来客数テーブル」は1月5日のデータがありません。

2つのテーブルをリレーションシップを設定するために日付の中間テーブルを作ってみることにしましょう。まずは2つのテーブルをPower BIに取り込んでおきましょう。以下の状態を準備してください。

Power BI サンプルデータの事前準備

既存のテーブルから中間テーブルを作る方法

では中間テーブルをつくっていきましょう。「ホーム」メニューの「クエリ」リボンにある「データの変換」を選択してください。

データの変換

すると、Power Query エディターが開きます。「ホーム」メニューの「統合」リボンに「クエリの追加」があるのでこのプルダウンメニューを開き、「クエリを新規クエリとして追加」を選びます。

クエリの追加

すると「追加」のダイアログが開きます。ここでリレーションシップを設定する2つのテーブルを指定します。

2つのテーブルの指定

ここでは1つ目のテーブルに「売上データ」、2つ目のテーブルに「来客数データ」を指定して「OK」をクリックします。

追加クエリの編集

すると「追加」クエリが作成(①)されます。中華テーブルには「支店名」「売上」「来客数」は不要なのでこれらの列を選択(②)したあと、右クリックして「列の削除」をクリック(③)します。また、このクエリの名前をわかりやすく「日付テーブル作成」としておきましょう。上記の④の「名前」の箇所を編集します。

重複行の削除

最後に重複行を削除しましょう。「ホーム」メニューの「行の削除」リボンから「行の削除」のプルダウンメニューを開き、「重複の削除」を選択します。

重複削除してできた日付テーブル

これで完成です。「ホーム」メニューの「閉じて適用」を選択しましょう。Power BI Desktopに戻ってくると、「日付テーブル作成」ができています。

日付テーブル

最後の仕上げです。まず、左のメニューから「モデル」を選択します。

リレーションシップの設定

すると、Power BI Desktopに取り込まれているテーブルが表示されるので、ここで「売上データ」の「日付」と「日付テーブル作成」の「日付」をつなぎます。日付テーブル作成の「日付」を左クリックした状態で話さないようにして、「売上データ」の「日付」までドラッグすると上記のように線でつながります。同様に「来客数」テーブルの「日付」もつなぎます。これでリレーションシップ設定は完了です。

ひとつレポートを作ってみましょう。左のメニューから「レポート」を選択します。

レポートの作成

「視覚化」から「テーブル」を選択して、列に「日付テーブル作成」テーブルから「日付」、「売上テーブル」から「売上」、「来客数テーブル」から「来客数」を設定しましょう。すると、以下のようなレポートができあがります。

できあがったレポート

「売上テーブル」には2022年1月6日のデータはありませんでしたが、中間テーブルと紐づけたことで来客数を表示することができています。反対に「来客数テーブル」2022年1月5日のでーたはありませんが、売上を表示できていますね。

新しいテーブルから中間テーブルを作る方法

もっと簡単に中間テーブルを作る方法もあります。Power BI Desktopの左メニューから「データ」を選択します。

新しいテーブル

次に「ホーム」メニューの「新しいテーブル」を選択します。

新しいテーブルの定義

すると「テーブルツール」メニューが選択された状態で開きます。リボン下部の「テーブル = 」の箇所(赤枠で囲っています)でテーブルを定義することができます。ここでは2022年1月4日から2022年1月7日を定義したいので次のようにします。

日付マスタ = DATATABLE("日付", DATETIME, {{"2022年1月4日"}, {"2022年1月5日"}, {"2022年1月6日"}, {"2022年1月7日"}})

上記を入力してEnterキーを押すだけで新しいテーブルができます。上記のコードでは「日付」が「日付/時刻」型となっているので「日付」型に変更しましょう。

型の変更

テーブルの「日付」を選択するとデータ型が表示されます。「日付と時刻」となっているのでプルダウンメニューから「日付」を選択します。

これで準備ができました。先ほどと同様に左側のメニューから「モデル」を選択してリレーションシップを設定することができます。

スポンサーリンク

まとめ

今回は中間テーブルを使ってリレーションシップ設定する方法をご紹介しました。今回は1対多の場合を扱いましたが、多対多の場合も中間テーブルを使うことでリレーションシップ設定をすることができます。実は多対多の場合は、「多対多カーディナリティのリレーションシップ」を使って設定することができますが少し注意事項があります。そのため、まずは中間テーブルを使った方法を知っておくとよいと思います。

また中間テーブルは日付に関するマスタを作る際には、専用の関数を使うとさらに簡単に作ることができます。これらはまた別の投稿で扱うことにします。

コメント

タイトルとURLをコピーしました