查看类别

Power BI REST API:无需 ODBC 驱动程序即可连接实时 SQL 数据

Power BI · 使用 REST API 而不是驱动程序

观点 Power BI 在 REST API不是数据库驱动程序

Power BI 通常通过计算机上的驱动程序访问数据库,对于计划刷新,则通过本地网关访问。查询流终结点是一个纯 HTTPS URL,因此 Power BI Desktop 和 Power BI 服务使用内置的 Web 连接器读取它。门户会自动为您编写 Power Query M: 导出 → Power Query M (.pq)粘贴,添加密钥,完成。同一个文件在 Excel 中也适用。

大约5分钟 没有驱动程序,没有网关 数据保留在您的网络上 Excel 也
遇到任何问题?尽管问我们。 打开 支持 请在“查询流”(右上角菜单 → 支持)中给我们发送消息。我们会安排专人阅读您的消息,“我不知道这个屏幕需要什么”就是一个很好的问题。

你最终会得到什么

这是一个通过 HTTPS 协议,利用已保存的 SQL 查询数据驱动的 Power BI 表。由于该端点与任何 Web API 类似,因此无需本地网关即可在服务中刷新该表。该端点在门户控制台中显示如下:

邮政api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19
钥匙价值描述
城市 字符串 选修的西雅图从已保存的查询中调用过滤器
X-API密钥qsapi_AB••••••••••你的秘密令牌
{
  “城市”: “西雅图”
}
标题价值描述
X-API密钥qsapi_AB••••••••••您的秘密令牌。每位来电者限用一个,可随时撤销。
内容类型application/json参数以 JSON 正文的形式传递。
接受application/json返回 JSON 格式;请求 text/csv 格式,则返回 CSV 格式。
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"city": "Seattle"}'
现状 200 OK时间 84毫秒尺寸 412 B截断 不
{
  “列”: [ { “姓名”: "customer_id", “类型”: 整数 }, { “姓名”: “姓名”, “类型”: “细绳” }, { “姓名”: “城市”, “类型”: “细绳” } ],
  “行”: [
    { "customer_id": 1042, “姓名”: “北风贸易公司”, “城市”: “西雅图” },
    { "customer_id": 1057, “姓名”: “高山装备店”, “城市”: “丹佛” },
    { "customer_id": 1063, “姓名”: “港口食品”, “城市”: “哈利法克斯” }
  ],
  “元”: { 行数: 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}
标题价值描述
内容类型application/json; charset=utf-8正文选项卡上的信封
内容长度412返回的字节数;上方“大小”徽章
只读:仅保存一个查询,没有其他内容 SQL 永远不会离开您的帐户 “活动”选项卡上的每次通话

驱动程序存在的原因在于,Power BI 必须无论运行在何处,都能与各个数据库的网络协议进行通信,这就是为什么计划刷新需要在您的网络内部部署一个网关。有了端点,已经与数据库关联的代理程序会运行查询,api.querystreams.com 会通过 HTTPS 将请求返回给 Power BI,因此 Power BI 无需安装任何软件,服务也无需建立任何隧道连接。

数据库的存放位置您的办公网络或服务器机房您自己的数据库保留在您的网络上查询流代理运行已保存的查询api.querystreams检查钥匙HTTPS · 仅行,绝不涉及 SQL持有钥匙的人你的应用、控制面板、合作伙伴、脚本使用 X-API-Key 进行 GET 或 POST 请求JSON、CSV 或 NDJSON 返回
代理程序会访问您的数据并执行查询。api.querystreams.com 会检查密钥和速率限制,并将数据行传递给 api.querystreams.com。调用方无需访问您的网络。

你需要准备什么

查询流帐户

每个套餐都提供 REST API。免费套餐提供一个端点、两个键,每次调用最多可发送 250 行数据,足以构建本指南。立即注册! my.querystreams.com.

计算机上的代理程序可以访问您自己的数据库,并且已添加连接。

通常是数据库服务器本身,或者同一网络上的始终在线的计算机。

查询生成器中已保存的查询

该端点仅封装一个已保存的查询。编写 SELECT 语句,运行一次,然后保存。添加动态筛选器( @variable 在 WHERE 子句中)如果调用者应该能够进行筛选。

谁可以创建端点? 所有者、管理员和创建者。如果 API 您的顶部栏缺少某个项目,管理员可以为您的用户启用它。 账户 → 权限任何与您共享端点的人只需要一个 Query Streams 帐户,任何套餐均可。

此外,还需要 Power BI Desktop 或 Excel 2016 或更高版本。如果您还没有终端, 数据库 REST API 中心 只需四步,即可将已保存的查询转换为 URL。

只需四步即可连接 Power BI

  1. 导出 Power Query M 文件

    在 API 打开您的端点,点击 出口 并选择 Power Query M (.pq)该文件已完整 让……进来 表达式中已包含端点 URL 和可调用参数。它看起来像这样:

    导出 · Power Query M (.pq)
    让
      来源 = Json。文档(网络。)内容(
        "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19",[标题 = [#“X-API-Key” = "qsapi_YOUR_KEY"], 查询 = [压缩 = “没有任何”]])), rows = Source[rows], table = Table。来自记录(行)
    在
      桌子

    出口总是要求 压缩=无因为 Power Query 无法解码 LZ4 帧;Power BI 需要的是经过 gzip 压缩的 JSON 格式。

  2. 将其粘贴到 Power BI 中

    在 Power BI Desktop 中选择 首页 → 转换数据 → 新建数据源 → 空白查询打开 高级编辑器将其内容替换为该文件,然后单击 完成在 Excel 中,路径是 数据 → 获取数据 → 来自其他来源 → 空白查询然后是相同的高级编辑器。

  3. 添加您的密钥

    请将占位符替换为您的 49 位字符密钥,密钥以 1 开头。 qsapi_ 从端点的 共享 选项卡。当 Power BI 询问如何连接时,请选择 匿名钥匙在……中旅行 X-API密钥 查询已设置标头,因此不需要 Power BI 凭据。

  4. 加载并刷新

    点击 关闭并应用。 这 行 数组将变成你的表格,每列对应一个查询列。发布到 Power BI 服务并设置刷新计划:由于数据源是 Web URL,因此不需要本地网关。每次刷新都只是对终结点的一次调用。 活动 标签。

就是这样。 Power BI 通过 HTTPS 读取实时行,数据库位于防火墙后,报表所有者永远不会看到 SQL 或数据库登录信息。

Power BI 发出的请求

其底层原理与使用 curl 发起的调用相同。标记为 Callable 的参数可以从 Power Query 传递。 查询 = [city = "西雅图"]:

GET · 查询字符串中的参数
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
响应 · 200 OK · application/json
{
  “列”: [ { “姓名”: "customer_id", “类型”: 整数 }, { “姓名”: “姓名”, “类型”: “细绳” }, { “姓名”: “城市”, “类型”: “细绳” } ],
  “行”: [
    { "customer_id": 1042, “姓名”: “北风贸易公司”, “城市”: “西雅图” },
    { "customer_id": 1057, “姓名”: “高山装备店”, “城市”: “丹佛” },
    { "customer_id": 1063, “姓名”: “港口食品”, “城市”: “哈利法克斯” }
  ],
  “元”: { 行数: 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}

返回的行是以列名为键的对象,包含列列表和一个 元 该信息块会告诉你有多少行数据、结果是否被截断以及你可以引用的请求 ID。与 POST 请求相同的操作会将参数放在 JSON 正文中,这对于较长的值列表来说是合适的选择:

POST 请求 · JSON 请求体中的参数
curl -X POST "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19" \ -H "X-API-Key: qsapi_YOUR_KEY" \ -H "Content-Type: application/json" \ -d '{"params": {"city": "Seattle"}}'
格式=csv
格式为 CSV 而非 JSON,包含表头行。 接受:文本/CSV 也一样。流式端点返回 NDJSON(每行一个 JSON 对象),并以结尾结尾。 {"_summary": true, "row_count": N} 检查最后一行。
?sample=true
最多五排,不计费。适合给客户接线。
压缩=lz4
适用于高流量呼叫者的 LZ4 框架机身,配备解码器; 代码 选项卡中包含每种语言的解码器代码片段。客户端发送文件时,会自动进行纯 gzip 压缩。 Accept-Encoding: gzip.
授权:Bearer qsapi_…
被接受为别名 X-API密钥. 在浏览器代码中使用它。

超越 Power BI

Excel 和 Power BI

导出 → Power Query M (.pq) 它会提供一个现成的查询。将其粘贴到高级编辑器中(Excel:数据 → 获取数据 → 来自其他来源 → 空白查询;Power BI:主页 → 转换数据 → 新建源 → 空白查询),并将占位符替换为您的查询语句。 qsapi_ 钥匙。

邮递员、失眠、跳房子

相同 出口 菜单下载 Postman v2.1 集合、Insomnia v5 导出或 Hoppscotch 集合,其中参数已填写完毕,并包含密钥占位符。

你自己的代码

这 代码 该选项卡包含 cURL、Python、JavaScript、TypeScript、Java、C#、Go、PHP、PowerShell 和 Ruby 的工作示例。 导出 → OpenAPI 3.1 规范 可为任何客户端生成器或 Swagger UI 提供数据。

n8n、Zapier、Make、cron

创建一个 服务密钥 对于该工具,请将 URL 和密钥粘贴到其 HTTP 节点中,并进行调度。每个工具都有自己的密钥,因此您可以撤销其中一个工具的密钥而不会影响其他工具。

这些计划允许什么?

计划终点每个端点的键每个端点的人数每次调用行数(静态)每次调用(流式传输)的行数每分钟按键通话次数
免费1212502503
个人核心2325,000250,00015
个人加强版55510,000500,00030
核心业务5101050,0001,000,000300
商务+102025100,0005,000,000600
商业最大253050250,00010,000,000600
企业核心5050100500,00025,000,0001,000
企业增强版1001002501,000,00050,000,0001,000
企业版 Max2502005002,500,000100,000,0001,500

每次调用都有固定的 60 秒查询超时时间和 8 MiB 的响应大小上限,返回的数据量会计入您套餐的每月数据流量限额,与 Excel 和 Google Sheets 插件使用的限额相同。免费套餐只有一个端点,每月 5 MB 流量,足以满足每天多次调用的小型表格的需求。 请查看定价页面 按计划发放津贴。

免费是一种你可以坚持的计划。 这不是一份会过期的试用期。请查看以下内容,了解具体包含哪些内容。 定价页面.

对于报表,请将查询限制在可视化所需的列上,其余的交给刷新计划来完成;Power BI 每次刷新都会读取整个结果,因此您的计划的静态行上限就是单个表的上限。

确保安全

SQL 代码仍然归您所有。

调用者只能获取数据行。他们看不到查询语句、表名或连接详情,也无法更改端点运行的内容。

一个密钥,一个端点,一个呼叫者

一个密钥只能对应一个终端。给每个人或工具分配一个密钥,每次调用都会被记录到该密钥下。撤销其中一个密钥,其他密钥仍然有效;撤销操作大约会在五分钟内生效。

只读,在你这边的墙里

代理程序仅运行已保存的 SELECT 查询,不会执行其他任何操作,它在您的网络内部,通过自身的出站连接运行。无需打开任何端口,也无需在互联网上提供任何凭据。

账簿中的每一次通话

这 活动 该标签页显示每次呼叫的时间、接收方、状态、行数、字节数和持续时间,包括被拒绝的呼叫。设置一个 即将到期 临时共享的生命周期以及端点会在指定日期自动关闭。

当某些事情不起作用时

现状代码该怎么办
401API密钥已要求 / API密钥无效缺少标头或密钥错误。发送 X-API-Key:qsapi_…全部49个字符。密钥可以从终端的“共享”选项卡中再次复制。
403API_KEY_ENDPOINT_MISMATCH在不同的端点上使用的有效密钥。每个密钥都属于一个端点。
403API密钥已撤销 / API端点已过期密钥已被撤销或端点已过期。请生成新密钥或恢复端点。
400API_PARAM_NOT_OVERRIDABLE您发送了一个参数,但其所有者未将其标记为可调用。请求体列出了允许的名称。
414API 查询过大GET 请求字符串传递了 8 KB 或 200 个列表值。请将相同的参数作为 POST 请求的 JSON 正文发送。
413API 输出过大结果超过了 8 MiB 的上限。请缩小查询范围,或将端点切换为流式传输。
429API_RATE_LIMITED这分钟内对密钥或端点的呼叫过多。请稍候。 重试后 秒,或举 利率限制 在 API 设置 → 套餐默认设置下。
429API_DATA_REALM_EXHAUSTED用户每月的数据流量已用完。流量将在下个月结算时重置;如需更多流量,请升级套餐。
503API代理未连接您数据库背后的代理已离线。请在“数据”→“数据代理”下检查;代理重新连接后,调用将再次成功。
504API 查询超时查询耗时超过 60 秒。请添加筛选条件或索引,或者保存更精确的查询语句。

每个错误体都有其形状 {"error": {"code": "…", "message": "…"}} 每个回应都包含一个 X-QS-请求-ID 邮件头。在联系客服时,请将 ID 号括起来。

Power Query 的两个具体说明: 数据源错误 命名 401 表示 M 文件中的密钥错误或已被撤销; Expression.Error:未找到记录的字段“rows”。 表示该端点返回了一个错误信封,因此请在门户控制台中运行 URL 来读取它。

人们提出的问题

我的数据会被复制到查询流吗?

不。代理程序会运行查询,查找您的数据,并仅发送调用请求的行。期间不会进行任何同步或缓存;每次调用都会运行查询。

用户能否修改 SQL 语句或要求添加其他表?

不。一个端点只会运行一个已保存的查询。调用者只能设置您标记的参数。 可调用并且这些值被安全地绑定:文本被引用和转义,数字被范围检查,列表被展开。

我该如何把这个交给我的搭档?

在端点上 共享 选择标签 人们 然后输入他们的邮箱地址。他们会收到一个神奇的链接,使用该地址登录(免费账户即可),并生成自己的密钥;您可以在“活动”选项卡上按名称查看他们的调用记录。对于服务器或自动化工具,请创建一个 API密钥 改为贴上标签。

当我编辑已保存的查询时会发生什么?

该端点会在下次调用时运行新的 SQL 语句,并重新生成其 OpenAPI 规范。URL 和键值不会改变。如果您添加或删除过滤器,请重新访问该端点。 锁定参数 这样,来电者就能看到正确的参数。

免费套餐真的包含这些吗?

是的。免费版是永久有效的,不是会过期的试用版。它包含一个端点、两个密钥,每次调用最多可处理 250 行数据。请查看具体包含内容。 定价页面.

Power BI 服务中的计划刷新功能真的可以在没有网关的情况下正常工作吗?

是的。该服务可以刷新任何内容。 网页内容 可通过公共互联网访问且支持匿名或嵌入式标头身份验证的数据源。api.querystreams.com 就是这样一个数据源;Power BI 绝不会直接访问您的数据库。

我可以使用DirectQuery吗?

不。Power BI 中的 Web 数据源处于导入模式。请使用刷新计划,或者缩小查询范围,并在套餐速率限制内更频繁地刷新。

Tableau 和 Looker Studio 可以使用同一个端点吗?

任何带有 Web 或 REST 连接器的工具都可以,而且 导出 → OpenAPI 3.1 规范 描述连接器构建器的端点。选择 格式=csv 适用于偏好 CSV 格式的工具。

还是不行? 打开 支持 请在“查询流”中告诉我们您当前处于第几步以及您看到的内容。我们会帮您连接。

Setup trouble?

  • Agent shows Offline, or Test connection and Browse are greyed out? Check that the Agent is online → Is the Agent online?
更新 2026 年 9 月 27 日

Powered by BetterDocs