Tutorial/Power BI 快速入门

用 Power Query 把汇率载入 Power BI

在 Power BI Desktop 中粘贴一段 M 查询,把 JSON 转成货币表,并让发布后的计划刷新继续工作。

ERexchangerate.dev·Aug 5, 2026·5 min

Power BI 已经带有所需连接器。新建空白查询,用 Web.Contents 访问 API。主机地址保持固定,把接口路径放在 RelativePath 中,Power BI 服务才能在刷新语义模型时识别这个数据源。

Key points
高级编辑器中粘贴 M 代码。
固定 https://api.exchangerate.dev,接口放进 RelativePath
输出每种货币一行,并保留来源和更新时间。
密钥由请求头发送,因此数据源凭据选匿名
PBIX 编辑者可能看到查询;广泛分发时请使用服务端代理。

新建空白查询

先创建免费密钥。在 Power BI Desktop 选择获取数据 → 空白查询,然后在 Power Query 编辑器打开视图 → 高级编辑器

粘贴 M 查询

Power Query M · Advanced Editorcopy
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 三行。

检查数据类型

currencybasesource 设为文本,rate 设为小数,data_updated_at 设为日期/时间/时区,然后点击关闭并应用

发布并设置计划刷新

在 Power BI 服务中打开 https://api.exchangerate.dev 的数据源凭据,选择匿名。M 查询已经通过 Authorization 请求头发送密钥。刷新频率按报表实际需要设置。

RelativePath 可避免动态数据源错误
Power BI 需要识别一个固定主机。把域名保留在 Web.Contents 中,只把接口路径放进 RelativePath,发布后才能稳定刷新。

M 参数不是密钥保险箱

能够编辑 PBIX 或查询的人可能看到密钥。小型内部工作区可以这样用;如果文件会广泛流转,请改用服务端代理。

这是参考汇率
适合报表、分析、规划和展示,不是可成交报价,也不能用于结算。
ER
exchangerate.dev
面向开发者的集成指南。

Keep reading

TutorialLive exchange rates in Excel with Power QueryRead ReferenceHistorical exchange rate APIRead TutorialGet exchange rates in n8nRead
更多比较Fixer vs exchangerate.devOpen Exchange Rates vs exchangerate.devCurrencylayer vs exchangerate.dev
学习Reading source and market_session in your pipelineIndicative vs executable FX rates: what a rates API actually gives youECB reference rates, explained
实时汇率EUR/USDGBP/USDUSD/JPY