Power Query:如何使电源查询更新合并文件?

Posted

技术标签:

【中文标题】Power Query:如何使电源查询更新合并文件?【英文标题】:Power Query: how can I make power query update a merge file? 【发布时间】:2020-06-04 14:17:17 【问题描述】:

我有两个合并的文件。

我希望定期更新这些文件,有时可以添加一列或更改列名。

但是,当列名更改时,它不会在生成的合并文件中更改。

我想让我的“合并查询”进化,以便用潜在的新输入“更新”。 例如,如果要合并的文件有一个多列或一个新名称,我希望我的查询能够反映这一点。

如何在我的查询中更改它? 这可能吗?

以下是我要解决的问题的一个最小示例:

文件一:

  |---------------------|---------------------|  
  |       Name          |      Pro1           |      
  |---------------------|---------------------|
  |         A           |         56          |     
  |---------------------|---------------------|
  |         B           |         56          |     
  |---------------------|---------------------|

文件 2:

  |---------------------|---------------------|  
  |       Name          |       WEURK         |      
  |---------------------|---------------------|
  |         A           |       LALALA        |     
  |---------------------|---------------------|
  |         B           |       RTEWRFVE      |     
  |---------------------|---------------------|

合并结果:

  |---------------------|---------------------|---------------------|    
  |       Name          |      Pro1           |       WEURK         |      
  |---------------------|---------------------|---------------------|
  |         A           |         56          |       LALALA        |        
  |---------------------|---------------------|---------------------|
  |         B           |         56          |       RTEWRFVE      |      
  |---------------------|---------------------|---------------------|

但是在这里,我做了以下示例:更改列名,但这对我的合并没有影响...如何使我的合并“更新”?

  |---------------------|---------------------|  
  |       Name          |    WALALLALALALA    |      
  |---------------------|---------------------|
  |         A           |         56          |     
  |---------------------|---------------------|
  |         B           |         56          |     
  |---------------------|---------------------|

【问题讨论】:

【参考方案1】:

您可以使用Table.ColumnNames 获取可能更改的表列名称列表。

这是一个最小可能的查询。

let
    // Column names in File2 except for "Name" column.
    #"File2 Columns" =
        List.RemoveItems(Table.ColumnNames(File2), "Name"),

    // Merge File2 into a nested table column named "__File2".
    // You may need to replace JoinKind to another one depending on your data.
    #"Merged Queries" =
        Table.NestedJoin(File1, "Name", File2, "Name", "__File2", JoinKind.FullOuter),

    // Expand all the columns except for "Name" in the nested "__File2" table.
    #"Expanded File2" =
        Table.ExpandTableColumn(#"Merged Queries", "__File2", #"File2 Columns")
in
    #"Expanded File2"

这个查询太简单了,不实用,因为它假设合并键列“名称”不会改变,并且在 File1 和 File2 中没有重复的列名。

但这将是你的起点。

【讨论】:

您好,谢谢!从您的回答中,我推断出我想做的事情在 Power BI 中是不可能的。我了解某些潜在的更改可能以某种方式“解释”或“考虑”在查询中,这将被“警告”。但我的愿望是动态地做到这一点。在我的情况下,我无法知道会发生什么。该查询将简单地使用给定的参考列来合并这两个字段,并会采用“所有其余部分”,无论这意味着采用新列还是名称已更改的列。我知道这是否不可能,但我只是想确保我的解释有意义..

以上是关于Power Query:如何使电源查询更新合并文件?的主要内容,如果未能解决你的问题,请参考以下文章

为啥power query合并查询中的右反查询出来的结果为空

Power Query 参数在一个表中起作用,但在另一个表中不起作用

power query中M函数和处理数据

如何使用Power Query动态汇总文件夹下多个Excel文件

Power Query - 合并查询返回 true 或 false

Excel Power Query;如何合并值并转动问题