Power Query:如果将工作簿移出到外部文件,工作查询将失败

Power Query:如果将工作簿移出到外部文件,工作查询将失败

我正在 Microsoft 365 的 Excel 中使用 Power Query。

这篇文章是此文的后续:
Power Query:合并现有表列表的子集

下面显示的 Power Query 不是我在上面链接的帖子中最终采用的解决方案,但它确实提出了一个我试图理解的问题。

考虑这个正在工作的 Power Query(直接保存在我的工作簿中):

// Combine the subset of tables Table1, Table2, Table3 that actually exist.
let
    remove_errors_f = (input_list as list) as list =>
                          List.RemoveNulls(
                                              List.Transform(
                                                                List.Positions(input_list),
                                                                each try input_list{_} otherwise null
                                                            )
                                          ),

    combiner_f = (AccumulatedTable as table, TablesToCombine as list) as table =>
                 if List.Count(TablesToCombine) = 0 then
                     AccumulatedTable
                 else
                     @combiner_f(Table.Combine({AccumulatedTable, TablesToCombine{0}}), List.RemoveFirstN(TablesToCombine, 1)),

    #"MyTables" = remove_errors_f({Table1, Table2, Table3}),
    #"All Column Names" = {"Column1", "Column2", "Column3"},

    Source = combiner_f(#table(#"All Column Names", {}), #"MyTables"),
    #"Source Sorted" = Table.Sort(Source, List.Transform(Table.ColumnNames(Source), each {_, Order.Ascending}))
in
    #"Source Sorted"

现在,假设我将此 Power Query 从我的文件中移出.xlsx,并将其逐个字符逐字移动到名为的文本文件中combine_worksheet_subset.pq。 (这是为了版本控制。)

然后,我直接在工作簿中创建一个“存根” Power Query 来加载和执行combine_worksheet_subset.pq

let
    // The source must be an absolute path
    Source = Text.FromBinary(File.Contents("C:\my_path\combine_worksheet_subset.pq")),
    EvaluatedExpression = Expression.Evaluate(Source, #shared)
in
    EvaluatedExpression

只要Table1Table2和全部Table3存在,此方法就可以正常工作。但是,如果这些表中的任何一个不存在,则此方法会失败。例如,如果我删除Table2,则会收到以下错误:

在此处输入图片描述

为什么这个 Power Query 从外部文件加载时会出现这种失败情况(但不是如果它直接存储在工作簿中)?

相关内容