观点 Power BI 在 REST API不是数据库驱动程序
Power BI 通常通过计算机上的驱动程序访问数据库,对于计划刷新,则通过本地网关访问。查询流终结点是一个纯 HTTPS URL,因此 Power BI Desktop 和 Power BI 服务使用内置的 Web 连接器读取它。门户会自动为您编写 Power Query M: 导出 → Power Query M (.pq)粘贴,添加密钥,完成。同一个文件在 Excel 中也适用。
你最终会得到什么
这是一个通过 HTTPS 协议,利用已保存的 SQL 查询数据驱动的 Power BI 表。由于该端点与任何 Web API 类似,因此无需本地网关即可在服务中刷新该表。该端点在门户控制台中显示如下:
| 钥匙 | 价值 | 描述 |
|---|---|---|
城市 字符串 选修的 | 西雅图 | 从已保存的查询中调用过滤器 |
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"}'{
“列”: [ { “姓名”: "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 | 返回的字节数;上方“大小”徽章 |
驱动程序存在的原因在于,Power BI 必须无论运行在何处,都能与各个数据库的网络协议进行通信,这就是为什么计划刷新需要在您的网络内部部署一个网关。有了端点,已经与数据库关联的代理程序会运行查询,api.querystreams.com 会通过 HTTPS 将请求返回给 Power BI,因此 Power BI 无需安装任何软件,服务也无需建立任何隧道连接。
你需要准备什么
计算机上的代理程序可以访问您自己的数据库,并且已添加连接。
通常是数据库服务器本身,或者同一网络上的始终在线的计算机。
查询生成器中已保存的查询
该端点仅封装一个已保存的查询。编写 SELECT 语句,运行一次,然后保存。添加动态筛选器( @variable 在 WHERE 子句中)如果调用者应该能够进行筛选。
谁可以创建端点? 所有者、管理员和创建者。如果 API 您的顶部栏缺少某个项目,管理员可以为您的用户启用它。 账户 → 权限任何与您共享端点的人只需要一个 Query Streams 帐户,任何套餐均可。
此外,还需要 Power BI Desktop 或 Excel 2016 或更高版本。如果您还没有终端, 数据库 REST API 中心 只需四步,即可将已保存的查询转换为 URL。
只需四步即可连接 Power BI
导出 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 格式。将其粘贴到 Power BI 中
在 Power BI Desktop 中选择 首页 → 转换数据 → 新建数据源 → 空白查询打开 高级编辑器将其内容替换为该文件,然后单击 完成在 Excel 中,路径是 数据 → 获取数据 → 来自其他来源 → 空白查询然后是相同的高级编辑器。
添加您的密钥
请将占位符替换为您的 49 位字符密钥,密钥以 1 开头。
qsapi_从端点的 共享 选项卡。当 Power BI 询问如何连接时,请选择 匿名钥匙在……中旅行X-API密钥查询已设置标头,因此不需要 Power BI 凭据。加载并刷新
点击 关闭并应用。 这
行数组将变成你的表格,每列对应一个查询列。发布到 Power BI 服务并设置刷新计划:由于数据源是 Web URL,因此不需要本地网关。每次刷新都只是对终结点的一次调用。 活动 标签。
就是这样。 Power BI 通过 HTTPS 读取实时行,数据库位于防火墙后,报表所有者永远不会看到 SQL 或数据库登录信息。
Power BI 发出的请求
其底层原理与使用 curl 发起的调用相同。标记为 Callable 的参数可以从 Power Query 传递。 查询 = [city = "西雅图"]:
curl "https://api.querystreams.com/v1/endpoints/8f2c4d1e-6b3a-4f7e-9c21-5d0a7b3e2f19?city=Seattle" \ -H "X-API-Key: qsapi_YOUR_KEY"
{
“列”: [ { “姓名”: "customer_id", “类型”: 整数 }, { “姓名”: “姓名”, “类型”: “细绳” }, { “姓名”: “城市”, “类型”: “细绳” } ],
“行”: [
{ "customer_id": 1042, “姓名”: “北风贸易公司”, “城市”: “西雅图” },
{ "customer_id": 1057, “姓名”: “高山装备店”, “城市”: “丹佛” },
{ "customer_id": 1063, “姓名”: “港口食品”, “城市”: “哈利法克斯” }
],
“元”: { 行数: 3, "agent_duration_ms": 41, "request_id": "req_7Hq2mKd9" }
}返回的行是以列名为键的对象,包含列列表和一个 元 该信息块会告诉你有多少行数据、结果是否被截断以及你可以引用的请求 ID。与 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 节点中,并进行调度。每个工具都有自己的密钥,因此您可以撤销其中一个工具的密钥而不会影响其他工具。
这些计划允许什么?
| 计划 | 终点 | 每个端点的键 | 每个端点的人数 | 每次调用行数(静态) | 每次调用(流式传输)的行数 | 每分钟按键通话次数 |
|---|---|---|---|---|---|---|
| 免费 | 1 | 2 | 1 | 250 | 250 | 3 |
| 个人核心 | 2 | 3 | 2 | 5,000 | 250,000 | 15 |
| 个人加强版 | 5 | 5 | 5 | 10,000 | 500,000 | 30 |
| 核心业务 | 5 | 10 | 10 | 50,000 | 1,000,000 | 300 |
| 商务+ | 10 | 20 | 25 | 100,000 | 5,000,000 | 600 |
| 商业最大 | 25 | 30 | 50 | 250,000 | 10,000,000 | 600 |
| 企业核心 | 50 | 50 | 100 | 500,000 | 25,000,000 | 1,000 |
| 企业增强版 | 100 | 100 | 250 | 1,000,000 | 50,000,000 | 1,000 |
| 企业版 Max | 250 | 200 | 500 | 2,500,000 | 100,000,000 | 1,500 |
每次调用都有固定的 60 秒查询超时时间和 8 MiB 的响应大小上限,返回的数据量会计入您套餐的每月数据流量限额,与 Excel 和 Google Sheets 插件使用的限额相同。免费套餐只有一个端点,每月 5 MB 流量,足以满足每天多次调用的小型表格的需求。 请查看定价页面 按计划发放津贴。
免费是一种你可以坚持的计划。 这不是一份会过期的试用期。请查看以下内容,了解具体包含哪些内容。 定价页面.
对于报表,请将查询限制在可视化所需的列上,其余的交给刷新计划来完成;Power BI 每次刷新都会读取整个结果,因此您的计划的静态行上限就是单个表的上限。
确保安全
SQL 代码仍然归您所有。
调用者只能获取数据行。他们看不到查询语句、表名或连接详情,也无法更改端点运行的内容。
一个密钥,一个端点,一个呼叫者
一个密钥只能对应一个终端。给每个人或工具分配一个密钥,每次调用都会被记录到该密钥下。撤销其中一个密钥,其他密钥仍然有效;撤销操作大约会在五分钟内生效。
只读,在你这边的墙里
代理程序仅运行已保存的 SELECT 查询,不会执行其他任何操作,它在您的网络内部,通过自身的出站连接运行。无需打开任何端口,也无需在互联网上提供任何凭据。
账簿中的每一次通话
这 活动 该标签页显示每次呼叫的时间、接收方、状态、行数、字节数和持续时间,包括被拒绝的呼叫。设置一个 即将到期 临时共享的生命周期以及端点会在指定日期自动关闭。
当某些事情不起作用时
| 现状 | 代码 | 该怎么办 |
|---|---|---|
| 401 | API密钥已要求 / API密钥无效 | 缺少标头或密钥错误。发送 X-API-Key:qsapi_…全部49个字符。密钥可以从终端的“共享”选项卡中再次复制。 |
| 403 | API_KEY_ENDPOINT_MISMATCH | 在不同的端点上使用的有效密钥。每个密钥都属于一个端点。 |
| 403 | API密钥已撤销 / API端点已过期 | 密钥已被撤销或端点已过期。请生成新密钥或恢复端点。 |
| 400 | API_PARAM_NOT_OVERRIDABLE | 您发送了一个参数,但其所有者未将其标记为可调用。请求体列出了允许的名称。 |
| 414 | API 查询过大 | GET 请求字符串传递了 8 KB 或 200 个列表值。请将相同的参数作为 POST 请求的 JSON 正文发送。 |
| 413 | API 输出过大 | 结果超过了 8 MiB 的上限。请缩小查询范围,或将端点切换为流式传输。 |
| 429 | API_RATE_LIMITED | 这分钟内对密钥或端点的呼叫过多。请稍候。 重试后 秒,或举 利率限制 在 API 设置 → 套餐默认设置下。 |
| 429 | API_DATA_REALM_EXHAUSTED | 用户每月的数据流量已用完。流量将在下个月结算时重置;如需更多流量,请升级套餐。 |
| 503 | API代理未连接 | 您数据库背后的代理已离线。请在“数据”→“数据代理”下检查;代理重新连接后,调用将再次成功。 |
| 504 | API 查询超时 | 查询耗时超过 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?

