Power Query参数Table如何避免防火墙阻塞?

How to avoid firewall blockage in Power Query's Parameter Table?

This powerful custom fnGetParameter function 让您可以动态地将文件名插入到您的查询中。

但正因为如此,Data source settings 显示 Current Workbook 而不是 您实际导入的文件:

因此,正如许多人在 link 中评论的那样,它可能会导致此消息,例如,如果我尝试 Merge QueriesTable.NestedJoin():

Formula.Firewall: Query '{name}' (step '{step}') references other queries or steps, so it may not directly access a data source. Please rebuild this data combination.

示例数据

cities.csv

姓名 城市
约翰 纽约
史蒂夫 新泽西

cars.csv

姓名 汽车
史蒂夫 宝马
约翰 保时捷

Excel本身

table 名称=参数

参数 价值
城市 c:\users{输入您的用户名}\Downloads\cities.csv
汽车 c:\users{输入您的用户名}\Downloads\cars.csv

城市查询

let
    Source = Csv.Document(File.Contents(fnGetParameter("cities")),[Delimiter=",", Columns=2, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Name", type text}, {"City", type text}})
in
    #"Changed Type"

汽车查询

let
    Source = Csv.Document(File.Contents(fnGetParameter("cars")),[Delimiter=",", Columns=2, Encoding=65001, QuoteStyle=QuoteStyle.None]),
    #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]),
    #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Name", type text}, {"Car", type text}}),
    #"Merged Queries" = Table.NestedJoin(#"Changed Type", {"Name"}, cities, {"Name"}, "cities", JoinKind.LeftOuter),
    #"Expanded cities" = Table.ExpandTableColumn(#"Merged Queries", "cities", {"City"}, {"City"})
in
    #"Expanded cities"

需要的输出是左上合并table:

通过替换使用中间人没有帮助:

Source = Csv.Document(File.Contents(fnGetParameter("cars")),

有:

middleman = File.Contents(fnGetParameter("cars"),
Source = Csv.Document(middleman),

middleman=fnGetParameter("cars"),
Source = Csv.Document(File.Contents(middleman),

当我选择过度忽略隐私级别时,它当然有效,但我宁愿不走那条路,尤其是它似乎不是保存在文件中,而是保存在特定文件路径下的注册表中计算机。

还有其他方法可以避免防火墙错误吗?

我的临时解决方案是运行这个VBA暂时禁用防火墙:

ThisWorkbook.Queries.FastCombine = True
...refresh connections or edit queries
ThisWorkbook.Queries.FastCombine = False