ブログ

Power BIでVlookupをする方法!LOOKUPVALUE関数(DAX)の使い方を解説

#Power BI #Vlookup #LOOKUPVALUE関数 #DAX

Power BIでExcelのVlookupのような事をしたい!という場面はありませんか?
Power BIでVlookupのように、異なるテーブルを連携して、一つのビジュアルにデータを表示するためには、主に4つの方法があります。

この記事では、Vlookupのような事を実現する4つの方法について、それぞれの特徴を比較し、使い分け方を解説します。

また4つの方法の中で主に、大規模なデータセットで、テーブル間のリレーションシップを作成できない場合に有効な「LOOKUPVALUE関数」の使い方を詳しく説明していきます。

 関連記事もぜひ参考にしてみてください
   ◆Power BIの使い方が初心者にわかりやすい!おすすめ教本3選
   ◆Power BIのテーブルを丸ごとエクセルにコピーしたい時のポイントをご紹介!
   ◆Power BIで出来ること!初心者でも出来るデータ作成手順をご紹介

Power BIでVlookupのような事を実現する4つの方法

初めに、Vlookupのような事を実現する4つの方法について、それぞれの特徴を解説します。

Power BIでExcelのVlookup関数のように、別のテーブルの列を参照するには、以下の4つの方法があります。

<Power BIでVlookupする方法>

  1. リレーションシップ
  2. クエリのマージ(PowerQuery)
  3. RELATED関数(DAX)
  4. LOOKUPVALUE関数(DAX)

 
例えば、以下のような売上一覧と、都道府県一覧のテーブルを見てみます。

※説明のためデータベースを簡略化していますが、通常は地域一覧もテーブルを分けます

Power BIで「都道府県」ごとの、「売上」データをグラフ化したい場合を考えます。
このとき大きく、売上一覧に「都道府県」列を追加せずに連携する方法と、「都道府県」列を追加して実現する方法があります。

1.のリレーションシップは、2つのテーブルを「都道府県コード」列をキーにして、紐づける方法で、この場合売上一覧に「都道府県」列を追加する必要はありません。
Power BIにおいて、基本的に使われるテーブル間の連携手法になります。

一方で、2.~4.のリレーションシップ以外の方法では、「売上一覧」テーブルに、「都道府県一覧」テーブルから「都道府県」列を参照して追加する操作になります。
※このときも、2つのテーブルの「都道府県コード」列がキーになり、「都道府県」列を追加します。


1.~4.それぞれの方法について、それぞれの特徴の比較も踏まえて説明します。

リレーションシップ

リレーションシップは上述したように、別のテーブルから列を追加することなく、複数のテーブル間を紐づけます。
それにより、同じグラフ上に異なるテーブル間の列を使って、データをビジュアル化することができます。

全てのデータを一つのテーブルにまとめると、データの不要な重複が生じます。
そのため、値として使うデータに対して、軸や凡例(切り口)として使うデータはテーブルを分けて、リレーションシップを作成することが推奨されます。

一方で、リレーションシップを作成するすべてのテーブルを読み込む必要があるため、ファイルサイズが大きくなり、複雑なデータモデルとなると、読込速度が遅くなるデメリットがあります。

クエリのマージ(PowerQuery)

PowerQueryエディタで、別のテーブルから列の追加を行う方法です。
すべてのテーブルを読み込み、リレーションシップを作成するのに比べ、不要なテーブルはPower BIデスクトップに読み込まないため、ファイルサイズを圧縮できます。

PowerQueryやDAXで列を追加し、不要なテーブル数を少なくすることで、シンプルでユーザーに分かりやすいデータモデルになります。

ただし大規模なデータセットの場合、PowerQueryでの操作が重くなる可能性があります。
その場合は、次の2つに示すDAX関数式を使うことを推奨します。

RELATED関数(DAX)

Power BIデスクトップでDAXを使い、別テーブルから参照して新しい列を追加する方法です。
RELATED関数を使い、列を追加する場合、テーブル間のリレーションシップを作成する必要があります。

テーブル間でリレーションシップを作成できる場合、LOOKUPVALUE関数より、RELATED関数を使う方が、パフォーマンスが向上します。

LOOKUPVALUE関数(DAX)

RELATED関数と同様、Power BIデスクトップでDAXを使い、別テーブルから参照して新しい列を追加する方法です。

テーブル間でリレーションシップを作成ができない上、大規模データセットのためにPowerQueryを使うと動作が重くなる場合は、LOOKUPVALUE関数を使い、列を追加します。

どのような時に、LOOKUPVALUE関数を使うのか?

1~4.のそれぞれの方法を、どのように使い分ければよいのか、以下のフロー図をもとに解説します。
特にリレーションシップとその他の手法、LOOKUPVALUE関数とその他の手法の使い分けは重要なので、よく理解しておく必要があります。


<4つの方法の使分けのフロー>
別テーブルから列を追加する?
同じグラフ上に異なるテーブルのデータを表示したいだけで、新しく列を追加しない場合は、「リレーションシップ」を使います。
大きなデータセット?
別のテーブルから列を追加する場合で、大きなデータセットでなければ、PowerQueryで「クエリのマージ」を使います。
リレーションシップを作成できる?
別のテーブルから列を追加する場合で、大きなデータセットの場合はDAX関数を使います。
このとき、リレーションシップを作成できる場合はRELATED関数、リレーションシップを作成できない場合はLOOKUPVALUE関数を使います。

LOOKUPVALUE関数を使い、異なるテーブルから列データを参照する方法

今回は特に、大きなデータセットで、リレーションシップを作成できない場合にVlookupを実現する方法として有効な、DAX関数「LOOKUPVALUE」関数の使い方を解説します。

1.サンプルデータとして、以下2つのテーブル(売上一覧、都道府県一覧)をExcelで用意しました。

売上一覧テーブル

都道府県一覧テーブル

2.Power BIデスクトップで2つのExcelシートを読み込み「モデル」タブを開くと、自動的に「都道府県コード」でリレーションシップが作成されているため、右クリックで「削除」します。
「リレーションシップの削除」のポップアップがでたら、「はい」をクリックします。

※Power BIでリレーションシップを自動検出させない方法については、以下の記事を参考にしてください。
PowerBIのリレーションシップの自動検出をさせない方法

3.「データ」タブを開き、「売上一覧」テーブルを選択後、「列ツール」の「新しい列」をクリックし、以下のDAX式を入力後にEnterキーを押すと、「都道府県」列が作成されます。
<DAX関数式>
都道府県 = LOOKUPVALUE(
‘都道府県リスト'[都道府県],
‘都道府県リスト'[都道府県コード],
‘売上一覧'[都道府県コード]
)


LOOKUPVALUE関数の構文は、以下のようになります。
<LOOKUPVALUE関数の使い方>
LOOKUPVALUE (
<表示したい列>,
<表示したいテーブルのキー列>,
<列を追加するテーブルの検索列>
[, <表示したいテーブルのキー列2>, <列を追加するテーブルの検索列2>]…
[, <検索結果がなかった場合に返す値>]
)
※[]内は省略可能です。

グラフの表示で使わない不要なテーブルや列は、非表示にしておくとよいでしょう。
※今回の場合、「都道府県リスト」テーブルや、「都道府県コード」列は使わないので非表示としました。


また、「売上」列を選択し、「列ツール」の「,」アイコンをクリックすると、数値をカンマ区切りで表示できます。

5.「レポート」タブに戻り、データをビジュアル化してみます。
「テーブル」のビジュアルを選択し、「列」に「地域」「都道府県」「売上」を入れてみると、下のように地域、都道府県ごとの売上の合計が適切に表示されます。

6.次に「積み上げ縦棒グラフ」のビジュアルを選択し、「X軸」に「地域」「都道府県」、「Y軸」に「売上」を入れてみると、下のように表示されます。
このとき、地域、都道府県でドリルダウンの機能を使うこともできます。
※リレーションシップで実現した場合も、ドリルダウン機能を使えます。

※Power BIのドリルダウンは、階層化された切り口で、データを掘り下げてみることができる機能です。
詳しい操作については、以下の記事を参考にしてください。
⇒PowerBIドリルダウンの方法を知っていますか?具体例を元にご紹介

このようにPower BIでは、DAXのLOOKUPVALUE関数を使い、簡単な操作で別のテーブルから列を追加することができました。

まとめ

この記事では、DAXのLOOKUPVALUE関数を使い、ExcelのVlookupを実現する方法を解説しました。
Power BIでVlookupをする方法としては、大きく以下の4つがあります。

  1. リレーションシップ
  2. クエリのマージ(PowerQuery)
  3. RELATED関数(DAX)
  4. LOOKUPVALUE関数(DAX)

 
LOOKUPVALUE関数は、大規模なデータセットで、テーブル間のリレーションシップを作成できない場合、別のテーブルから列を追加したいときに有用です。

簡単な関数式で列を追加することができるので、是非実践してみてください!

Power BIの操作にお困りの方や、Power BI導入をご検討の方は是非、弊社にご相談ください!

<Power BIハンズオンセミナー>
弊社ではPower BIをはじめとするさまざまな無料オンラインセミナーを実施しています!
>>セミナー一覧はこちら

<Power BIの導入支援>
弊社ではPower BIの導入支援を行っています。ぜひお気軽にお問い合わせください。
>>Power BIの導入支援の詳細はこちら

<PowerBIの入門書を発売中!>
弊社ではPower BIの導入から基本的な使い方・活用方法の基礎などをわかりやすく解説した書籍も販売しています。
>>目次も公開中!書籍の詳細はこちら

CONTACT
お問い合わせ

ご相談やご依頼、病院マスタなどについてのお問い合わせはこちらのお問い合わせフォームから。

サービスなどについてのお問い合わせ 病院マスタについてのお問い合わせ

メールお問い合わせ