如何正确使用 Function.InvokeAfter 来延迟 Excel 中整个查询的 Power Query 处理

问题描述 投票:0回答:1

我试图将 Excel 中的 Power Query 运行延迟大约 25 秒(我们将其称为查询 2)。这是为了允许另一个查询(查询 1)首先从外部源提取数据。查询 2 仅引用内部表数据,并且完成速度比查询 1 快得多,这意味着它错过了大部分数据更新。结果是我最终使用“全部刷新”两次来获取所有数据。这很好,但很烦人,我相信可以通过使用 Power Query 中的高级编辑器来解决。

我无法使用 VBA 代码来解决特定电子表格的问题(需要维护 .xlsx)。

我的在线研究表明可以使用 Function.InvokeAfter 来完成此任务。

我知道您需要将所有查询操作作为函数调用,但我在语法方面遇到了问题。

这是我的代码片段...它可以工作,但不会根据需要延迟查询。我认为问题在于 Let 命令的处理方式(非顺序)。我确信语法已关闭,因为我是 Power Query 高级编辑器的新手。请注意,我不关心文本形式的获取时间,我只是试图做“某事”来使查询延迟。我尝试将源代码行引用为函数,但随后收到有关无法将表作为类型函数返回的错误。

让 GetTimeAsText = ()=> DateTime.ToText(DateTime.LocalNow()), 输出 = GetTimeAsText() & " " & Function.InvokeAfter(GetTimeAsText, #duration(0,0,0,25)), 来源 = Excel.CurrentWorkbook(){[Name="ReviewHist"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"下载 Dt", type datetime}, {"LTCF", type text}, {"其他监控设置", type text}}), #"追加查询" = Table.Combine({#"更改类型", ReviewPrep}), #"更改类型1" = Table.TransformColumnTypes(#"附加查询",{{"下载 Dt", 输入日期}}), #"删除重复项" = Table.Distinct(#"更改 Type1", {"下载 Dt"}), #"已排序的行" = Table.Sort(#"已删除重复项",{{"下载 Dt", Order.Descending}}) 在 #“已排序的行”

excel powerquery m
1个回答
0
投票

将 Query1 中的引用添加到 Query2,从而强制 Query2 首先完成。您实际上不必使用所引用的数据。

//Query2 code
let Source2=Query1,
Source=blah blah,
#nextstep=(Source,
© www.soinside.com 2019 - 2024. All rights reserved.