必要なコネクタはPower BIに入っている。空のクエリでWeb.Contentsを使い、ホストは固定したままエンドポイントをRelativePathに分ける。これでPower BI Serviceが更新時にデータソースを特定できる。
- 詳細エディターにMコードを貼り付ける。
https://api.exchangerate.devを固定し、RelativePathを使う。- 通貨ごとの行にsourceと更新時刻を追加する。
- キーはヘッダーで送るため、データソース認証は匿名を選ぶ。
- PBIX編集者はクエリを見られる。広く配布するならサーバー側プロキシを使う。
空のクエリを作る
無料キーを作成する。Power BI Desktopでデータを取得 → 空のクエリを選び、Power Queryエディターの表示 → 詳細エディターを開く。
Mクエリを貼り付ける
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クエリが送る。レポートに合う更新頻度を指定する。
Power BIは固定されたホストを識別する必要がある。Web.Contentsにはドメインを残し、パスだけをRelativePathにすると、公開後の更新が通りやすい。
Mパラメーターを秘密保管庫にしない
PBIXやクエリを編集できる人にはキーが見える可能性がある。少人数の社内ワークスペースなら運用できるが、ファイルを広く配布する場合はサーバー側プロキシを使う。
レポート、分析、計画、表示向けであり、取引の約定値や決済価格ではない。