PowerBI

【PowerBI応用】複合主キー(複数列)でリレーションシップする方法を解説!

ミムチ
ミムチ
ムム…Power BIのモデルで2つの列を使ったリレーションシップをしたいのですが、うまくいきませんぞ…

パワ実
パワ実
Power BIでは複数列で直接リレーションシップをすることはできないよ。

この記事では、複数列(複数列)でのリレーションシップのやり方について解説します。

この記事でわかること

  1. 主キーとは何か?
  2. 複合主キーとはなにか?
  3. 複数列(複数列)でリレーションシップする方法

YouTube動画で見たいかたは、こちらからどうぞ!

リレーションシップとは何か?について知りたい方は、以下の記事を参考にしてください。

【Power BI入門】リレーションシップとは?データベース設計の基本を学ぶ! この記事では、Power BIのリレーションシップについて、データベース設計の基本と一緒に解説します。 YouTube...

複合主キーとは?

複合主キーとは、複数のキー(複数列)の組み合わせからなる主キーのことです。

ミムチ
ミムチ
そもそも、主キーとは何ですかな?

パワ実
パワ実
初めに主キー(Primary key)の説明をするね。

まずは下の、商品コード列でリレーションされている、2つのテーブルをみてね。

この場合、テーブル2:商品一覧の「商品コード列」が主キー(Primary key)になります 。

主キーとは、リレーションシップをするために紐付ける列で、一意のデータを持つ列のことです。

では次に、下の表の例を見てみましょう。

テーブル1:スーパーの売上一覧は先ほどと同じですが、テーブル2:商品一覧に、日付、原価、売価の列を追加しました。

パワ実
パワ実
日付ごとに商品の原価、売価が変わる場合、この2つのテーブルはどのように紐づければいいかな?

ミムチ
ミムチ
この場合は、日付と商品コードの2列で、リレーションシップをしたいですぞ!

パワ実
パワ実
その通り!

この時、日付と商品コードの2列を組み合わせて、主キーとして、リレーションシップができるよ。

このように複数の列を組み合わせて主キーとしたものを、複合主キーと呼びます。

しかし、Power BIではこの複合主キー(複数列)を使ったリレーションシップをすることは今のところできません。

ではどうするのかというと、日付列と商品コード列を結合して、複合主キーの列を追加します。

この追加した複合主キーの列を使って、リレーションシップをすればよいのです。

ミムチ
ミムチ
なるほどでずぞ!

リレーションシップ用の列を追加すればいいのですな。

パワ実
パワ実
じゃあ実際に、複合主キー列の作成方法を解説するね!

複合主キー(複数列)でのリレーションシップの方法

複合主キーを使ったリレーションシップの方法を解説していきます。

まず、以下の2つのテーブルをExcelで用意しました。

テーブル1:売上一覧(SalesList)

テーブル2:ProductList(商品一覧)

1.PowerBIデスクトップを開き、データを取得からExcelファイルを取り込みます。

2.PowerQueryで2つのテーブルを取り込んだら、ProductListのクエリを開き、「日付列と「商品CD列をCtrlキーを押しながら選択し、列の追加タブの「列のマージ」をクリックします。

3.列のマージで以下のように入力し、「OK」をクリックします。

  • 区切り記号:カスタム、「_(アンダーバー)」
  • 新しい列名:日付-商品CD

4.日付列と商品CD列をマージした「日付_商品CD」列が新たにできました!

5.同様の手順でSalesListクエリを開き、売上日列と商品CD列をマージして、「日付-商品CD」列を作成します。

6.また、ProductListクエリの売値列、原価列の順に選択し、列の追加から「標準」の「減算」をクリックし、「売値-原価」を計算した列を追加します。

7.各レコードの利益が計算で出せましたので、列名を「利益」に変更します。

8.PowerQueryエディタでの編集が終わったら、ホームタブの「閉じて適用」をクリックし、Power BIデスクトップ画面に戻ります。

9.「モデル」タブを開くと、日付-商品CD列で自動でリレーションシップされていると思います。

※自動でリレーションシップされていない場合は、手動でリレーションシップしましょう。

10.レポートタブに戻り、ツリーマップのビジュアルに、以下のようにデータを入れてみます。

  • カテゴリ:ProductListの「商品名」
  • 値:SalesListの「売上数」

図のようにうまくグラフが表示されていれば、リレーションシップが上手くいっています。

もしグラフの表示がおかしかったら、PowerQueryエディタで「列のマージ」が正しくできているか、データ型が正しいかや、Power BIデスクトップの「モデル」タブで「リレーションシップ」が適切にできているかを確認しましょう。

11.次に、利益×売上数の計算で、利益額のメジャーを追加してみます。

売上数の列を右クリックし、新しいクイックメジャーを選択します。

12.クイックメジャーで、以下のように値を設定し、OKをクリックします。

  • 計算:乗算(ドロップダウンで選択)
  • 基準値:売上数の合計
  • 乗算する値:利益額の合計(フィールドからドラッグ&ドロップ)

13.電卓アイコンで新しいメジャーができるので、名前を「利益額」に変更します。

14.ビジュアルの「折れ線グラフ及び集合縦棒グラフ」を選択し、以下のようにデータをいれてみます。

  • X軸:ProductListの商品名
  • 列のY軸:SalesListの利益額(クイックメジャーで作成)
  • 線のY軸:売上数の合計

最後に

本日は複数列(複合主キー)を使ったリレーションシップについて説明しました。

パワ実
パワ実
今回説明した複合主キーを使わなければ、リレーションシップができない場面も多くあるから、是非覚えておいてね!

ミムチ
ミムチ
やり方自体は比較的簡単でしたな。

これでミムチも複合主キーでのリレーションシップは完璧ですぞ!

次回は引き続きリレーションシップ応用として、多対多結合について説明します。

【PowerBI応用】多対多リレーションシップの方法を解説! この記事では、Power BIで多対多リレーションシップをする方法を解説します。 YouTube動画で見たいかたは、...
ABOUT ME
パワ実
DX推進担当(IT部門) 2021年からPower Platform(Power BI、Power Apps、Power Automate)を勉強中。 Power Platformを使っていく中で、知りえた情報を発信している。 Youtube、Twitterでの情報発信もしています!

Power Platformのご依頼・ご相談について

Power Platformについてのご相談、お仕事のご依頼については、
こちらのお問い合わせページをご確認ください。