この記事では、複数列(複数列)でのリレーションシップのやり方について解説します。
- 主キーとは何か?
- 複合主キーとはなにか?
- 複数列(複数列)でリレーションシップする方法
YouTube動画で見たいかたは、こちらからどうぞ!
リレーションシップとは何か?について知りたい方は、以下の記事を参考にしてください。
複合主キーとは?
複合主キーとは、複数のキー(複数列)の組み合わせからなる主キーのことです。
まずは下の、商品コード列でリレーションされている、2つのテーブルをみてね。
この場合、テーブル2:商品一覧の「商品コード列」が主キー(Primary key)になります 。
主キーとは、リレーションシップをするために紐付ける列で、一意のデータを持つ列のことです。
では次に、下の表の例を見てみましょう。
テーブル1:スーパーの売上一覧は先ほどと同じですが、テーブル2:商品一覧に、日付、原価、売価の列を追加しました。
この時、日付と商品コードの2列を組み合わせて、主キーとして、リレーションシップができるよ。
このように複数の列を組み合わせて主キーとしたものを、複合主キーと呼びます。
しかし、Power BIではこの複合主キー(複数列)を使ったリレーションシップをすることは今のところできません。
ではどうするのかというと、日付列と商品コード列を結合して、複合主キーの列を追加します。
この追加した複合主キーの列を使って、リレーションシップをすればよいのです。
リレーションシップ用の列を追加すればいいのですな。
複合主キー(複数列)でのリレーションシップの方法
複合主キーを使ったリレーションシップの方法を解説していきます。
まず、以下の2つのテーブルをExcelで用意しました。
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軸:売上数の合計
最後に
本日は複数列(複合主キー)を使ったリレーションシップについて説明しました。
これでミムチも複合主キーでのリレーションシップは完璧ですぞ!
次回は引き続きリレーションシップ応用として、多対多結合について説明します。