我正在尝试重用一个电源查询来从另一个电源查询中提取信息。 似乎有多种方法可以做到这一点。 我从这个问题看到了两种方法。 我也在我自己的电子表格中看到它。 在我的电子表格中,我显然有:
Source = Excel.CurrentWorkbook(){[Name="Project_List"]}[Content],
在其他疑问中我有:
Source = Project_List,
其中一种方法有优势吗?
最终我希望实现的是通过网络查询一次数据,将其转储到表A中,然后在后续查询中继续引用表A,而不是通过网络拉取数据以进行后续查询。
我注意到,当我使用
Source = Project_List,
构建最近的查询时,在后续查询的每一步中,它实际上都重新加载了 Project_list 查询加载的所有文件。
这只是构建过程的一部分吗? 或者,如果我有一个通过网络加载的查询 A 和 5 个引用查询 A 的后续查询,查询/Excel 是否会通过网络读取 1 次或 5 次?
Power Query 中引用现有查询并减少通过网络拉取数据的正确方法是什么?
Power Query 将始终从源流式传输数据 - 请参阅此处以获得更全面的理解。
https://www.youtube.com/watch?v=AIvneMAE50o
解决这个问题的唯一方法是使用 Table.Buffer 或 List.Buffer 临时缓存数据。
对于这一行,那么您可能有另一个名为 Project_List 的查询,该查询又从工作簿中获取数据?
Source = Project_List,
如果你想测试缓冲查询,你可以尝试这个。查询 A 是
let
Source = {1..1e1},
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Added to Column" = Table.TransformColumns(#"Converted to Table", {{"Column1", each _ + Number.Random(), type number}}),
A = Table.Buffer(#"Added to Column")
in
A
B 是
let
Source = {1..1e1},
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
BufferedA = Table.Buffer(A),
#"Added Custom" = Table.AddColumn(#"Converted to Table", "Custom", each A),
#"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"Column1"}, {"Custom.Column1"})
in
#"Expanded Custom"
您可以测试 3 种方式 - 无缓冲区、B 中的缓冲区和 A 中的缓冲区。没有缓冲区总是随机的,而 A 或 B 中的缓冲区被缓存并重复
右键单击并创建一个空白查询: