发生多个请求时
以下部分介绍了Power Query可以向数据源发送多个请求时的一些实例。
连接器设计
连接器可以出于各种原因对数据源进行多次调用,包括元数据、结果缓存、分页等。 此行为是正常的,旨在以这种方式工作。
引用单个数据源的多个查询
如果多个查询从该数据源拉取,则可能会出现对同一数据源的多个请求。 即使只有一个查询引用数据源,这些请求也会发生。 如果查询由一个或多个其他查询引用,则独立计算每个查询(以及它依赖的所有查询)。
在桌面环境中,使用单个共享缓存运行数据模型中所有表的单个刷新。 Caching可以减少对同一数据源的多个请求的可能性,因为一个查询可以受益于已针对其他查询运行和缓存的相同请求。 不过,即使在此处,也可以获取多个请求,因为数据源未缓存 (例如本地 CSV 文件) ,因此对数据源的请求不同于由于下游操作 (可以更改折叠) 而缓存的请求,缓存太小 (相对不太可能) , 或因为查询大致同时运行。
在云环境中,每个查询都使用自己的单独缓存进行刷新,因此查询无法受益于已为其他查询缓存的相同请求。
折叠
有时,Power Query的折叠层可能会根据正在下游执行的操作生成对数据源的多个请求。 In such cases, you might avoid multiple requests by using Table.Buffer
. 详细信息: 缓冲表
加载到Power BI Desktop模型
在Power BI Desktop中,Analysis Services (AS) 使用两个评估来刷新数据:一个用于提取架构(即通过请求零行实现的架构),另一个用于提取数据。 如果计算零行架构需要提取数据,则可能会出现重复的数据源请求。
数据隐私分析
数据隐私对每个查询进行自己的评估,以确定查询是否安全运行在一起。 此评估有时可能会导致对数据源发出多个请求。 一个指示符号,给定的请求来自数据隐私分析,即它将具有“TOP 1000”条件 (,尽管并非所有数据源都支持此类条件) 。 通常,禁用数据隐私(假设可以接受)会在刷新期间消除“TOP 1000”或其他与数据隐私相关的请求。 详细信息: 禁用数据隐私防火墙
后台数据下载 (也称为“后台分析”)
与为数据隐私执行的评估类似,默认情况下,Power Query编辑器将下载每个查询步骤的前 1000 行预览。 下载这些行有助于确保数据预览在选择步骤后立即显示,但也可能导致数据源请求重复。 详细信息: 禁用后台分析
其他Power Query编辑器后台任务
各种Power Query编辑器后台任务还可以触发 (额外的数据源请求,例如查询折叠分析、列分析、1000 行预览的自动刷新,Power Query加载结果后触发Excel等) 。
隔离多个查询
可以通过关闭查询过程的特定部分来隔离多个查询的实例,以隔离来自重复请求的位置。 例如,如果开始:
- 在Power Query编辑器中
- 禁用防火墙
- 禁用后台分析
- 禁用列分析和其他任何后台任务
- [可选]执行
Table.Buffer
在此示例中,刷新Power Query编辑器预览时,只会进行单个 M 评估。 如果此时发生重复请求,则这些请求在创作查询的方式上是固有的。 如果没有,并且如果逐个启用上述设置,则可以观察重复请求的开始时间点。
以下各部分更详细地说明了这些步骤。
设置Power Query编辑器
无需重新连接或重新创建查询,只需在Power Query编辑器中打开要测试的查询。 如果不想使现有查询混乱,可以在编辑器中 复制 查询。
禁用数据隐私防火墙
下一步是禁用数据隐私防火墙。 此步骤假设你不担心源之间的数据泄漏,因此,可以使用Excel中的“设置快速组合”选项中所述的“始终忽略隐私级别”设置设置来完成数据隐私防火墙的禁用,或者使用“忽略隐私级别”,并可能会提高Power BI Desktop隐私级别中所述的性能设置Power BI Desktop。
在恢复正常测试之前,请务必撤消此步骤。
禁用后台分析
下一步是禁用后台分析。 后台分析由“允许数据预览”控制,可在“禁用Power Query后台刷新”中所述的后台设置中下载Power BI。 还可以在Excel中禁用此选项。