Power BI道場 リレーションを使ってテーブルの結合を定義しよう

Power BI
この記事で解決できる疑問

  • テーブル同士を結合する方法は?
  • 複数キーでリレーションを作成する方法は?
  • SQLみたいに外部結合や内部結合をコントロールできないの?

Power BIでは取り込んだ複数のテーブルの情報を組み合わせられます。

この機能によって、分析用のカテゴリデータをあとから簡単に追加できます。
例えば売上の顧客分析をしたいときに、顧客の業種や地域の分析軸を追加できるのです。

リレーションシップは初心者から中級者に上がるときに立ちはだかる大きな壁です。
この壁を乗り越えると分析の幅が大きく広がります。

この記事ではリレーションシップの基礎知識についてまず説明します。
そのあとに、データベースに詳しい人が抱くよくある疑問点について解説します。

▼ リレーションシップの作成画面

筆者について

著書「Power BIの教科書」で、Power BIについて効率的に学べる本を出版。
情報システム部員で、業務に役に立つ使い方を中心に解説しています。

基本編 リレーションシップの考え方と作り方

リレーションシップとは何か

リレーションシップは何でしょうか?

リレーションシップは複数のテーブルの関係性を定義する設定です。
この設定をすると違うテーブルに保存しているデータを一緒に出すことができます。

具体的にみていきます。
売上実績を製品カテゴリで分析したいとします。
でも売上実績には製品カテゴリはありません。
このときに次の手順で情報をとってきます。

  1. 「売上実績」テーブルの品目名で、「品目マスタ」を検索
  2. 検索された行の製品カテゴリを取得
  3. 新しい項目に取得した製品カテゴリをセットする

これがリレーションの基本的なしくみです。

Power BIでリレーションシップの設定

Power BIでリレーションシップの設定をします。
先程の例では「売上実績」の品目名で、「品目マスタ」の品目名を探しました。
これを設定すればリレーションシップを作成できます。

【リレーションを作成

売上実績と品目マスタテーブルのリレーションシップを作成します。

1.モデルビューを選択します
 リレーションシップはモデルビューの画面で設定します

2. 品目をドラッグ&ドロップする
 売上実績の品目コードを品目マスタの品目コードの真上にドラッグ&ドロップします

以上で設定は完了です。
売上実績と品目マスタのテーブルの間に線を引けたら成功です。

応用編 よくある疑問への対応方法

複数キーでリレーションシップはどのように作成するの?

Power BIでは複数キーのリレーションシップは作成できません。

サンプルとして、全世界の電話番号を考えてください。
日本とアメリカで同じ電話番号が使われている可能性があります。
ですので、「国コード」と「 電話番号」の2つの項目をリレーションシップに使います。

対応方法として次の2つが考えられますが、今回は2のPower BIで対応する方法を紹介します。

  1. Power Queryで結合する
  2. Power BIで複数キーから一つの項目を作成する

【複数キーのリレーションを作成

問い合わせと会員情報テーブルのリレーションシップを作成します。
2つのキーの項目を組み合わせた新しい列を作るのがポイントです。

1.データビューで「国コード + 電話番号」の項目を作成します
リレーションシップを作成するテーブル2つに項目を作成します。
DAX式:国際電話番号 = [国コード] & “-” & [電話番号]
 

2. リレーションシップを作成します
モデルビューに移動して、新規に作成した国際電話番号の項目を使ってリレーションシップを作成します

SQLみたいに外部結合や内部結合をコントロールできないの?

Power BIはテーブルの結合方法を直接指定する設定はありません。

結合の方法というのは先程の問い合わせの例ですと、「問い合わせ」テーブルに対して「会員情報」を追加するか、それとも「会員情報」に対して「対合わせ」情報を追加するかです。

次のように問い合わせがない人の表示が違ってきます。

Power BIは多対1のときは、多のテーブルに対して1の情報を追加します。
問い合わせの例では、上図左の表示です。
右の表示に変更するには、グラフ設定で変更します。

【多対1の1側の全件を表示する

会員情報の全件を出すように変更します。

1.グラフで「データのない項目を表示する」にチェックします
全件表示したい項目の設定画面を開きます。
そこでデータのない項目を表示するにチェックします 

2. 空白表示を0に変更する
表示された「佐藤 ひとみ」の行のカウントは空白なので、0を表示するように変更します。
メジャーを作成して、
件数 = COUNT(‘問い合わせ'[内容]) + 0
と0を足せば空白が0表示にかわります。

両方のテーブルに存在するレコードしか出さないようにするには、フィルターを利用します。
多対1の多側のテーブルの主キーに、フィルター設定で「空白でない」を設定します。

多対多を選択すると警告がでる理由は?

先程の例で電話番号でリレーションを作ると多対多となって警告がでます。
この警告はいったいなんでしょうか?

これは電話番号が重複しているという意味です。
「123-123-123」からの問い合わせは、会員情報を見ると2人います。
ですので、2人から問い合わせが来たという意味になってしまいます。

リレーションシップで多対多はとても特殊なケースしか使いません。
ですので、データが間違っている可能性が高いので見直してみましょう。

まとめ

今回はリレーションの作成方法についてみてきました。
複雑なレポートになるとリレーションは必ず使うようになります。
今回の記事を内容を、レポートづくりにお役立てください。

記事を読んで有益だと思っていただけた方は、次の書籍と講座の紹介を見ていただけるとうれしいです。

Power BIの書籍と講座の紹介

Power BIの内容を推敲して書籍と講座にまとめました。
内容はコンテンツ紹介からご確認できます。

次のような方に、お役に立つように内容をまとめています。
・効率的にPower BIを学びたい方
・実務に役にたつノウハウを学びたい方
・便利な使い方の確認など、体系的に学びなおしたい方


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