ブログ

Power BIでVlookupをする方法 リレーションやDAXを使用した実装方法を分かりやすく解説

#Power BI #Vlookup #LOOKUPVALUE関数 #DAX

積極採用中
セミナー情報

Power BIを使っていると、「ExcelのVLOOKUPのように別テーブルから値を取得したい」と思う場面がよくあります。
例えば、商品コードから商品名を取得したり、社員コードから部署名を取得したりするケースです。ただし、Power BIにはVLOOKUP関数はありません。
その代わりに、リレーション、RELATED、LOOKUPVALUE、Power Queryのマージなど、複数の方法で同じような処理を実現できます。

この記事では、それぞれの違いや使い分けを整理しながら、LOOKUPVALUE関数の基本的な使い方を分かりやすく解説します。

Power BIで「VLOOKUP的にやりたいこと」を整理する


Power BIにはVLOOKUP関数そのものはありません。 しかし、別テーブルから値を取得する仕組みは複数用意されています。
まずはExcelのVLOOKUPで何をしていたのかを整理し、Power BIではどの方法を選ぶべきかを確認していきましょう。

ExcelのVLOOKUPで何をしているかを思い出す

ExcelのVLOOKUPは、
「キー列をもとに別の表から対応する値を取得する」ための関数です。
例えば次のような売上データがあるとします。
ExcelのVLOOKUP

VLOOKUPを使うことで商品名を取得できます。
Power BIでも同じことは可能ですが、Excelとは実現方法が異なります。

ExcelではVLOOKUPで直接値を取得しますが、Power BIではリレーションを土台として、RELATEDやLOOKUPVALUE、Power Queryマージなどの方法で値を取得します。
ExcelのVLOOKUPとPower BIのリレーション

Power BIでは「参照」の選択肢が複数ある

Power BIでは主に次の4つの方法で別テーブルの値を取得できます。
Power BIでは「参照」の選択肢が複数ある

どれも目的は似ていますが、得意な場面が異なります。
実務では、まずリレーションを検討し、それで解決できない場合にLOOKUPVALUEを使う
という考え方が基本になります。

別テーブルから値を取得する4つの方法


Power BIで別テーブルの値を取得する方法は1つではありません。
ExcelではVLOOKUPを使う場面でも、Power BIではリレーション、RELATED、LOOKUPVALUE、Power Queryのマージなど複数の選択肢があります。

それぞれ特徴が異なるため、まずは全体像を理解しておくことが大切です。
別テーブルから値を取得する4つの方法

リレーション:Power BIの土台となる「テーブル同士のつながり」

Power BIで最初に検討したいのがリレーションです。リレーションとは、テーブル同士をキー列で結び付ける仕組みです。
例えば、次のような売上テーブルと商品マスタがあるとします。
リレーション:Power BIの土台となる「テーブル同士のつながり」

商品コードをキーにリレーションを設定すると、Power BIは両テーブルの関係を認識できます。
リレーション:Power BIの土台となる「テーブル同士のつながり」
その結果、売上テーブルと商品マスタの項目を同じビジュアル内で利用できるようになります。

Power BIのデータモデルは、このリレーションを中心に構築するのが基本です。

RELATED関数:リレーションを使って値を引っ張ってくる

RELATED関数は、リレーションでつながった別テーブルの値を取得し、現在のテーブルに計算列として追加したい場合に使用するDAX関数です。
例えば商品マスタから商品名を取得する場合は、売上テーブルに次の計算列を作成します。
RELATED関数

これだけで商品コードに対応する商品名を取得できます。
RELATED関数

ExcelのVLOOKUPに近い動きですが、Power BIではリレーションを利用しているため、よりシンプルに記述できます。また、パフォーマンス面でも優れているため、リレーションが組める場合はRELATEDを利用するのが基本です。
※商品名やカテゴリなどをビジュアル上で表示するだけであれば、RELATED関数を使わず、リレーションだけで実現できるケースもあります。

LOOKUPVALUE関数:リレーションが使えない場面で活躍

LOOKUPVALUEは、条件を指定して別テーブルから値を取得するDAX関数です。
基本構文は次のようになります。
基本構文

これで商品コードに対応する商品名を取得できます。
LOOKUPVALUE関数

動きとしてはExcelのVLOOKUPに最も近い関数です。
ただし、Power BIではリレーションとRELATEDが利用できる場合が多いため、LOOKUPVALUEは補助的な位置付けになります。

例えば次のようなケースで利用します。

  • リレーションを作れない
  • 別条件で値を取得したい
  • 複数キーで検索したい

柔軟性は高い一方で、RELATEDより処理負荷が大きくなる点には注意が必要です。

Power Queryのマージ:データ取り込み時点で結合する

もう1つの方法がPower Queryのマージです。
これはDAXで値を取得するのではなく、データを取り込む段階でテーブル同士を結合する方法です。
ExcelでいうVLOOKUPというより、SQLのJOINに近いイメージです。
例えば売上テーブルと商品マスタをマージすると、読み込み後には商品名を含んだ1つのテーブルになります。

  1. 「ホーム」→「データの変換」
  2. Power Queryのマージ

  3. 「売上テーブル」→「クエリのマージ」
  4. Power Queryのマージ

  5. 売上テーブルの商品コードと商品マスタの商品コードを選択→結合の種類「左外部」を選択→「OK」
  6. Power Queryのマージ

  7. 追加された売上テーブルの列の右上にある「↔ 」を選択→商品名とカテゴリに✔を入れる→「OK」を選択→閉じて適用で完了
  8. Power Queryのマージ

  9. 商品名とカテゴリの列が追加された
  10. Power Queryのマージ

メリットは、分析時にDAXを書かなくて済むことです。
一方で、一度結合すると後から柔軟に構造を変更しにくくなるため、分析用途によってはリレーションの方が適している場合もあります。

どのケースでどれを使う?選び方の判断軸


ここまで4つの方法を紹介しましたが、「結局どれを使えばいいのか分からない」と感じる方も多いでしょう。
実務では、まずリレーションを中心に考え、それで解決できない場合に他の方法を検討するのが基本です。

ここでは判断基準を整理します。

まずはリレーション+RELATEDを検討する

Power BIでは、まずリレーションを作れるかを確認しましょう。
例えば、

  • 商品コード → 商品マスタ
  • 社員コード → 社員マスタ
  • 店舗コード → 店舗マスタ

のようにキーが明確な場合は、リレーションを設定し、RELATED関数で必要な値を取得する方法が基本です。

この方法がおすすめな理由は次のとおりです。

  • DAXが短い
  • 処理が速い
  • モデル構造が分かりやすい
  • 保守しやすい

そのため、多くの「VLOOKUP的な処理」は、まずリレーション+RELATEDで対応できないかを検討します。
なお、商品名やカテゴリなどをビジュアル上で表示するだけであれば、RELATED関数を使わず、リレーションだけで実現できるケースもあります。ただし、別テーブルの値を現在のテーブルへ列として追加したい場合は、RELATED関数が必要です。

LOOKUPVALUEを選ぶべき場面

LOOKUPVALUEは、リレーションだけでは対応しにくい場合に利用します。
例えば次のようなケースです。

  • リレーションを作れない
  • 複数条件で検索したい
  • 一時的な参照を行いたい
  • 既存リレーションとは別条件で値を取得したい

例えば、
LOOKUPVALUEを選ぶべき場面
のような単価マスタがある場合、「商品コード」と「年度」の両方で検索したいケースがあります。このような複合条件の参照は、LOOKUPVALUEが得意な場面です。ただし、リレーションで解決できるなら、その方がシンプルです。
LOOKUPVALUEは便利ですが、第一選択ではなく補助的な手段と考えましょう。

Power Queryのマージを選ぶべき場面

データ取り込み時点で結合してしまいたい場合は、Power Queryのマージが有力な選択肢です。

例えば、

  • 毎回同じ参照を行う
  • 分析担当者がDAXを触らない
  • テーブル構造をシンプルにしたい

といったケースです。

マージ後は1つのテーブルとして扱えるため、レポート作成時の操作が分かりやすくなります。一方で、後から分析方法を変更したい場合は柔軟性が下がるため、モデル設計とのバランスが重要です。

判断フロー:迷ったらどう考えるか

実務では、次の順番で考えると迷いにくくなります。
判断フロー

迷った場合は、「まずリレーション」を合言葉にすると判断しやすくなります。
Power BIはリレーションを前提に設計されているため、多くのケースで最も自然な方法になるからです。

LOOKUPVALUEの実践:書き方と注意点


LOOKUPVALUEは、Power BIでVLOOKUPに最も近い感覚で使えるDAX関数です。ただし、ExcelのVLOOKUPと同じつもりで使うとエラーになることもあります。

ここでは基本構文から複数条件での検索、よくあるトラブルまで確認していきましょう。

基本構文:結果列・検索キー列・検索値の3点セット

LOOKUPVALUEの基本構文は次のとおりです。
LOOKUPVALUEの基本構文

例えば、売上テーブルの商品コードから商品マスタの商品名を取得する場合は次のように記述します。
結果列・検索キー列・検索値の3点セット

この式は、

  1. 商品マスタの商品コードを探す
  2. 売上テーブルの商品コードと一致する行を見つける
  3. 対応する商品名を返す

という動きをしています。

ExcelのVLOOKUPに慣れている方は、
「検索値 → 商品コード」
「戻り値 → 商品名」
と考えると理解しやすいでしょう。

複数キーで検索したい場合の書き方

LOOKUPVALUEの大きな特徴の1つが、複数条件で検索できることです。
例えば単価マスタが次のようになっているとします。
複数キーで検索したい場合の書き方

この場合、商品コードだけでは単価を特定できません。商品コードと年度の両方を条件にする必要があります。

その場合は次のように記述します。
複数キーで検索したい場合の書き方
キー列と検索値をペアで追加するだけで、複数条件検索が可能です。
Excelで複数条件のVLOOKUPを実現しようとすると補助列を作ることがありますが、LOOKUPVALUEではそのまま記述できます。

つまずきポイントと対処

LOOKUPVALUEで初心者がよく遭遇するトラブルを紹介します。

検索結果が複数見つかる

例えば商品コードA001がマスタ内に重複している場合、Power BIはどの値を返せばよいか判断できません。
その結果、エラーになります。
検索結果が複数見つかる

まずは検索キーが一意になっているか確認しましょう。

データ型が一致していない

見た目は同じでも、

  • 数値型
  • 文字列型

が混在していると一致しません。

例えば、
データ型が一致していない
のような状態です。
値が取得できない場合は、データ型も確認してみましょう。

処理が重くなる

LOOKUPVALUEは行ごとに検索を行うため、大量データでは処理負荷が高くなることがあります。
例えば数十万件、数百万件のデータを扱う場合は注意が必要です。

そのため実務では、

  • リレーションで解決できる → RELATED
  • 取り込み時に結合できる → Power Query マージ
  • どうしても必要 → LOOKUPVALUE

という順番で考えることが推奨されます。

まとめ:Power BIにおける「データ参照の考え方」を身につける


ExcelのVLOOKUPと同様に、Power BIでも別テーブルの値を取得できます。ただし、Power BIにはリレーション、RELATED、LOOKUPVALUE、Power Queryのマージなど複数の方法があります。

基本はリレーションを設定し、RELATEDで参照する方法です。
リレーションが使えない場合や複数条件で検索したい場合はLOOKUPVALUEを検討しましょう。また、取り込み時にデータを結合したい場合はPower Queryのマージも有効です。

それぞれの特徴を理解して使い分けることで、より効率的なデータモデルを構築できるようになります。

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

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

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

CONTACT
お問い合わせ

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

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

メールお問い合わせ