- データ分析を始めたいが特に使うツールが決まっていない方
- Power BIでどんなことができるか知りたい方
- Power BIを使い始めたばかりで基本から学びたい方
▶ 中間テーブルを作ってリレーションシップの設定をする方法はこちらをご覧ください
▶ カレンダーテーブルの作成方法はこちらの投稿をどうぞ
はじめに
今回は複数の列をキーとしてリレーションシップ設定する方法を基本から解説します。データの集計をしているときに、1つのキーではリレーション設定ができないケースが出てきます。そんなときに複数の列を組み合わせてキーとする方法が有効です。さっそくみていきましょう。
複数の列でリレーションの設定
実はPower BIでは複数の列を組み合わせてリレーション設定する機能はありません。ただ、複数の列を組み合わせてあらたな列を作って、その列をキーとしてリレーション設定することで同じことができます。このように、複数の列を組み合わせてつくったリレーション設定のキーとする新しい列のことを複合主キーといいます。まずは複合主キーの作り方をみていきましょう。
サンプルデータ
「売上テーブル」「来客数テーブル」の2つのテーブルがあり、「日付」や「支店名」など単独の列では一意にならない。但し、この2つを組み合わせると一意になるので、この組み合わせを主キーにしたい、というケースを考えましょう。

複数の列を組み合わせて主キー(複合主キー)とする
まず複合主キーをつくりましょう。ここでは、 「日付」と「支店名」から複合主キーを作ります。まずは「ホーム」メニューの「クエリ」リボンから「データの変換」を選択してPower Queryエディタを起動しましょう。

次に各テーブルに複合主キーを作っていきます。まずは「売上テーブル」からです。

まずは「売上てテーブル」を選択(①)し、次に「日付」列を選択した状態でCtrlキーを押しながら「支店名」の列をクリックします。これで2つの列を選択(②)した状態になります。この状態で「列の追加」メニューの「テキストから」リボンの「列のマージ」をクリックします。

すると「列のマージ」ダイアログが表示されます。ここでは区切り記号を「カスタム」として「_(アンダースコア)」を指定しています。またわかりやすいように列名を「複合主キー」としておきましょう。最後に「OK」をクリックします。

すると上記のように複合主キーが完成しました。同じ要領で「来客数テーブル」にも複合主キーを作成します。

これで完成です。「ホーム」タブから「閉じて適用」をクリックしてPower BI Desktopに戻ります。
複合主キーでリレーション設定
まずリレーションを確立させましょう。Power BI Desktopで「モデル」画面を開きます。

ここまで全く同じ手順で進めてきていれば、既にリレーションは確立できています。②の部分は2つのテーブル間で列名が揃っていれば既にリレーション設定されています。まだリレーション設定されていなければ、ここで設定してしまいましょう。「売上テーブル」で「複合主キー」を選択した状態で「来客数テーブル」の「複合主キー」にドラッグ&ドロップすればOKです。
最後にレポートを作って確認してみましょう。まず、「レポート画面」を表示しましょう。必要に応じてカレンダーの中間テーブルも作っておくとよいでしょう。
▶ カレンダーテーブルの作り方は以下の投稿をどうぞ
ここでは「折れ線グラフおよび集合縦棒グラフ」を描いてみました。

棒グラフは「来客数テーブル」の来客数、折れ線グラフは「売上テーブル」の売上を指定しています。しっかりリレーションして描画できていますね。
まとめ
今回は複数の列でリレーション設定する方法を解説しました。単独の列だけではリレーション設定できない、複合主キーを使わないとうまくいかない、といったケースは必ずあると思うので、是非マスターしておきましょう。
コメント