Power BI 已经带有所需连接器。新建空白查询,用 Web.Contents 访问 API。主机地址保持固定,把接口路径放在 RelativePath 中,Power BI 服务才能在刷新语义模型时识别这个数据源。
- 在高级编辑器中粘贴 M 代码。
- 固定
https://api.exchangerate.dev,接口放进RelativePath。 - 输出每种货币一行,并保留来源和更新时间。
- 密钥由请求头发送,因此数据源凭据选匿名。
- 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 服务中打开 https://api.exchangerate.dev 的数据源凭据,选择匿名。M 查询已经通过 Authorization 请求头发送密钥。刷新频率按报表实际需要设置。
Power BI 需要识别一个固定主机。把域名保留在 Web.Contents 中,只把接口路径放进 RelativePath,发布后才能稳定刷新。
M 参数不是密钥保险箱
能够编辑 PBIX 或查询的人可能看到密钥。小型内部工作区可以这样用;如果文件会广泛流转,请改用服务端代理。
适合报表、分析、规划和展示,不是可成交报价,也不能用于结算。