▶ Power BIのインストールがまだの方は以下の投稿をご覧ください。
▶ Power BIでデータ項目を追加する方法は以下の投稿をご覧ください。
はじめに
異なるテーブル間で共通の項目がある場合、リレーションシップを設定しておくと便利です。リレーションシップを設定する方法は中間テーブルを使う場合と、多対多カーディナリティのリレーションシップを組む方法があります。今回は中間テーブルを使う方法を基本からご紹介します。
リレーションシップの設定
サンプルデータで実際に設定しながら説明していきましょう。A支店、B支店、C支店の日別の売上データを集計したテーブル(売上テーブル)とA支店、B支店、C支店の日別の来客数を合計したテーブル(来客数テーブル)があります。この2つのテーブルのリレーションシップの設定をすることにしましょう。
「売上テーブル」は1月4日~1月7日までのデータがありますが、1月6日のデータが抜けています。また支店によってはデータがない日があります。「来客数テーブル」は1月5日のデータがありません。
2つのテーブルをリレーションシップを設定するために日付の中間テーブルを作ってみることにしましょう。まずは2つのテーブルをPower BIに取り込んでおきましょう。以下の状態を準備してください。
既存のテーブルから中間テーブルを作る方法
では中間テーブルをつくっていきましょう。「ホーム」メニューの「クエリ」リボンにある「データの変換」を選択してください。
すると、Power Query エディターが開きます。「ホーム」メニューの「統合」リボンに「クエリの追加」があるのでこのプルダウンメニューを開き、「クエリを新規クエリとして追加」を選びます。
すると「追加」のダイアログが開きます。ここでリレーションシップを設定する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対多の場合を扱いましたが、多対多の場合も中間テーブルを使うことでリレーションシップ設定をすることができます。実は多対多の場合は、「多対多カーディナリティのリレーションシップ」を使って設定することができますが少し注意事項があります。そのため、まずは中間テーブルを使った方法を知っておくとよいと思います。
また中間テーブルは日付に関するマスタを作る際には、専用の関数を使うとさらに簡単に作ることができます。これらはまた別の投稿で扱うことにします。
コメント