如何解决Power Query中Formula.Firewall权限错误问题?
解决Power Query Formula.Firewall错误的方法
问题原因
这个错误是Power Query防火墙规则触发的结果:当同一查询同时引用外部Web源查询(#"Identifiers")并直接访问新的Web数据源时,即使所有数据源隐私级别设为"organizational",规则仍会拦截——它需要确保数据源的访问路径明确且无交叉。
可行解决方案
方案1:将标识符数据落地到Excel工作表后再导入
- 打开
#"Identifiers"查询,点击主页选项卡的关闭并上载,把数据加载到Excel的一个工作表(比如命名为IdentifiersTable) - 修改Query1的Source步骤,替换为从工作表读取数据:
Source = Table.Buffer(Excel.CurrentWorkbook(){[Name="IdentifiersTable"]}[Content]),
- 重新刷新Query1,此时查询不再直接引用外部Web源查询,防火墙规则不会拦截。
方案2:将标识符获取逻辑嵌入Query1,消除跨查询引用
把#"Identifiers"的Web源获取逻辑直接写入Query1的Source步骤,不再依赖外部查询:
let // 直接在Query1中获取Identifiers数据,替代原有的Source = Table.Buffer(#"Identifiers") Source = Table.Buffer( let WebSource = Web.Contents("https://your-original-api-url-for-identifiers"), ParsedData = Json.Document(WebSource), // 这里补充你原来获取#"Identifiers"的完整转换步骤 ConvertedToTable = Table.FromRecords(ParsedData) in ConvertedToTable ), #"Added Custom" = Table.AddColumn( Source, "web query", each create_query_string([id_a], [id_b]) ), #"Added Custom1" = Table.AddColumn( #"Added Custom", "results", each my_web_query( "https://my.website.com/rest_api", [web query], "my_api_key" ) ) in #"Added Custom1"
这样Query1成为独立的完整查询,没有跨查询的数据源引用,防火墙不会触发错误。
方案3:临时关闭隐私级别检查(不推荐长期使用)
如果只是临时验证结果,可以调整设置绕过防火墙:
- 打开Power Query编辑器,点击
文件→选项和设置→查询选项 - 切换到
隐私选项卡,勾选忽略隐私级别检查(可能降低安全性) - 注意:此方法会削弱数据访问的安全性,仅用于临时测试,生产环境不建议使用。
内容的提问来源于stack exchange,提问作者PaulH
相关产品推荐
相关产品推荐

