Excel 要附加到现有表的Power查询

Excel 要附加到现有表的Power查询,excel,powerquery,Excel,Powerquery,我最近切换到PowerQuery从各种来源获取数据。我已将现有数据加载到名为masterEntries的表中 我的查询调用了一个函数来检查masterEntries中每个源的最后一条记录,并且只获取较新的记录 let Source = Excel.CurrentWorkbook(){[Name="formsMaster"]}[Content], #"Changed Type" = Table.TransformColumnTypes(Source,{{"FormName", ty

我最近切换到PowerQuery从各种来源获取数据。我已将现有数据加载到名为masterEntries的表中

我的查询调用了一个函数来检查masterEntries中每个源的最后一条记录,并且只获取较新的记录

let
    Source = Excel.CurrentWorkbook(){[Name="formsMaster"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"FormName", type text}, {"Form", type text}, {"LastEntry", Int64.Type}}),
    #"Added Custom" = Table.AddColumn(#"Changed Type", "Custom", each formEntries([FormName],[LastEntry])),
    #"Expanded Custom" = Table.ExpandTableColumn(#"Added Custom", "Custom", {"EntryId", "Field1", "Field2", "Field3", "Field5", "DateCreated"}, {"EntryId", "Field1", "Field2", "Field3", "Field5", "DateCreated"}),
    #"Removed Columns" = Table.RemoveColumns(#"Expanded Custom",{"Form", "LastEntry"}),
in
    #"Removed Columns"
此查询将数据加载到新表中。相反,我想将数据附加到主条目

我试图用PowerQuery而不是VBA来实现这一点。PowerQuery具有追加查询功能,可以将两个或多个查询/结果组合到一个新表中

即使是一个新的查询,将上述查询的结果表附加到现有的表主条目中也可以

有没有关于如何使用PowerQuery实现的想法

编辑

我的原始数据主条目是手动加载的。这是一个拥有400K+记录的大表。如果有帮助的话,我可以使用查询加载它。 每次运行latestEntries都会检查masterEntries中已经存在的记录,并且只从不同的来源获取较新的条目。 powerquery中的Append查询方法只是一个连接。它不会永久附加记录。也就是说,当latestEntries带来一组新的记录时,主条目将丢失latestEntries早期运行中的记录。
您应该添加如下内容,只需将_表的名称更改为您想要使用的表:

    #"Append Query" = Table.Combine({#"Removed Columns", Your_Table})
in
    #"Append Query"

这听起来有点像是对增量加载的请求。Excel中的Power Query当前不支持此操作。解决方法是通过如下所述的链接表:

如果您的linkback表超过1,1百万行,您可以使用JSON压缩,如下所述: 但请注意,这会影响性能


这两种方法都会降低性能,因此这种技术只有在您避免重复执行非常繁重的转换或web上的长时间加载时才有意义。

假设您有某种ID,并且它是整数,下面是对masterEntries表的查询,这很重要!:

let
    Source = Excel.CurrentWorkbook(){[Name="masterEntries"]}[Content],
    Types = Table.TransformColumnTypes(Source,{{"ID", Int64.Type}, {"Value", type number}}),

    //Assuming you have integer-type IDs. 
    //Otherwise you have to order and index records in a view, and query that view.
    MaxID = List.Max(Types[ID]), 
    //if you have ordered index, List.Max() can be substituted with Table.LastN(Types, 1)[ID]{0}
    //it may perform better.

    TableFromDB = Excel.CurrentWorkbook(){[Name="source"]}[Content], //Replace with database table
    GetNewRows = Table.SelectRows(TableFromDB, each [ID] > MaxID),
    MergeTables = Table.Combine({Types, GetNewRows})
in
    MergeTables

您必须创建到第一个数据源的连接并加载它。之后,您应该创建第二个连接,完成编辑后,只需从主功能区转到“附加查询”,然后选择“第一个连接”。然后,您很可能需要对数据进行排序。这是一个非常简单的过程,他们在这方面做得很好。第二个连接将数据加载到一个新表中。它不会将数据追加到现有表中。我不想要包含合并数据的新表。如果我弄错了,请纠正我。确实如此,但随后您应用了追加查询,它完全按照其名称告诉您并提供追加解决方案的方式进行操作。追加解决方案是指我得到的主表追加了附加数据吗?我得到的是一个我不想要的新表。首先得到新表,然后将新表附加到最后一个表。或者,您可以选择“将查询追加为新”,它将创建一个由两个查询组合而成的新表。这会将组合后的数据加载到一个新表中。我需要的是将组合数据放在您所谓的_表中。是否关闭并加载了?我发布的查询将数据加载到一个名为latestenteries的新表中。您的建议只会生成包含完整数据集的latestEntries表。好的,您可以从latestEntries中删除此代码,并将其添加到源表代码中,同时将_表更改为latestEntries。您可能需要将删除的列更改为源表的最后一次编辑。我已更新了我的问题,澄清了我的需要,并指出了追加查询的问题。