ガイドチュートリアル

Power Queryで為替レートをPower BIに読み込む

Power BI DesktopにMクエリを貼り付け、JSONを通貨テーブルに変換し、公開後もスケジュール更新できる形にする。

2026年8月5日 · 5 min

必要なコネクタはPower BIに入っている。空のクエリでWeb.Contentsを使い、ホストは固定したままエンドポイントをRelativePathに分ける。これでPower BI Serviceが更新時にデータソースを特定できる。

  • 詳細エディターにMコードを貼り付ける。
  • https://api.exchangerate.devを固定し、RelativePathを使う。
  • 通貨ごとの行にsourceと更新時刻を追加する。
  • キーはヘッダーで送るため、データソース認証は匿名を選ぶ。
  • PBIX編集者はクエリを見られる。広く配布するならサーバー側プロキシを使う。

空のクエリを作る

無料キーを作成する。Power BI Desktopでデータを取得 → 空のクエリを選び、Power Queryエディターの表示 → 詳細エディターを開く。

Mクエリを貼り付ける

Power Query M · Advanced Editor
let    ApiKey = "exr_live_replace_with_your_key_here",    Base = "USD",    Symbols = "EUR,GBP,JPY",    Response = Json.Document(        Web.Contents(            "https://api.exchangerate.dev",            [                RelativePath = "v1/latest/" & Base,                Query = [symbols = Symbols],                Headers = [Authorization = "Bearer " & ApiKey]            ]        )    ),    Rates = Record.ToTable(Response[rates]),    Renamed = Table.RenameColumns(        Rates,        {{"Name", "currency"}, {"Value", "rate"}}    ),    WithBase = Table.AddColumn(Renamed, "base", each Response[base], type text),    WithSource = Table.AddColumn(WithBase, "source", each Response[source], type text),    WithUpdatedAt = Table.AddColumn(        WithSource,        "data_updated_at",        each DateTimeZone.FromText(Response[data_updated_at]),        type datetimezone    )in    WithUpdatedAt

キーのプレースホルダーを置き換えて完了を押し、クエリ名をFxRatesにする。EUR、GBP、JPYが別々の行に表示されればよい。

データ型を確認する

currency、base、sourceはテキスト、rateは小数、data_updated_atは日時/タイムゾーンにする。その後、閉じて適用を押す。

公開して更新を設定する

Power BI Serviceでhttps://api.exchangerate.devのデータソース認証を開き、匿名を選ぶ。AuthorizationヘッダーはMクエリが送る。レポートに合う更新頻度を指定する。

RelativePathが動的データソースのエラーを防ぐ

Power BIは固定されたホストを識別する必要がある。Web.Contentsにはドメインを残し、パスだけをRelativePathにすると、公開後の更新が通りやすい。

Mパラメーターを秘密保管庫にしない

PBIXやクエリを編集できる人にはキーが見える可能性がある。少人数の社内ワークスペースなら運用できるが、ファイルを広く配布する場合はサーバー側プロキシを使う。

参考レートとして使う

レポート、分析、計画、表示向けであり、取引の約定値や決済価格ではない。

よくある質問

Power BIから為替APIを直接呼べますか?

はい。Web.ContentsでJSONを取得し、Power Queryでratesレコードを表に変換します。

動的データソースと表示されるのはなぜですか?

Web.Contentsのホストを固定し、エンドポイントをRelativePathへ移してください。

認証方式は何を選びますか?

MクエリがAuthorizationヘッダーを送るため、匿名を選びます。

関連記事

無料のAPIキーで始める

無料プランで月5,000リクエスト。クレジットカードは不要です。

無料キーを取得