首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Power Query动态重命名一组列

使用Power Query动态重命名一组列
EN

Stack Overflow用户
提问于 2016-01-18 23:47:44
回答 4查看 12.3K关注 0票数 3

我尝试在Power Query中动态地重命名一组列,List1是原始列名,List2是新列名。我想我需要将List1和List2合并到一个单独的配对列表中,但是找不到正确的语法。

非常感谢!

代码语言:javascript
复制
    let

    //list of original column names 
    List1= {"Name1","Name2","Name3","Name4"},

    //Create test table
    Source = Table.FromRows({{1231,1233,4121,5232},{3546,3426,1246,3464}} , List1),

    //list of new column names
    List2 = {"NewName 1","NewName 2","NewName 3","NewName 4"},

    //Rename columns (in practice, the two lists of names will be dynamic, not hard coded as below)
    Result = Table.RenameColumns(Source, {
        {"Name1","NewName 1"},
        {"Name2","NewName 2"},
        {"Name3","NewName 3"},
        {"Name4", "NewName 4"}})

    in
        Result
EN

回答 4

Stack Overflow用户

发布于 2016-01-20 23:05:12

如果您有一个包含旧名称和新名称的表,则可以使用以下模式

代码语言:javascript
复制
let
    rename_list = Table.ToColumns(Table.Transpose(Table2)),
    result = Table.RenameColumns(Table1, rename_list, MissingField.Ignore)
in result

其中Table2是“重命名表”,Table1是包含数据的初始表。

这个想法在这里有详细的描述,https://bondarenkoivan.wordpress.com/2015/04/17/dynamic-table-headers-in-power-query-sap-bydesign-odata/

票数 4
EN

Stack Overflow用户

发布于 2016-01-19 06:25:45

如果您有所需的结果列名,似乎可以将Source转换回行,然后在List2上调用Table.FromRows

代码语言:javascript
复制
let

    //list of original column names 
    List1= {"Name1","Name2","Name3","Name4"},

    //Create test table
    Source = Table.FromRows({{1231,1233,4121,5232},{3546,3426,1246,3464}} , List1),

    //list of new column names
    List2 = {"NewName 1","NewName 2","NewName 3","NewName 4"},

    Result = Table.FromRows(Table.ToRows(Source), List2)

in
    Result

(除非假设Name 2永远是第二列是错误的。)

票数 1
EN

Stack Overflow用户

发布于 2016-01-27 23:35:37

根据Ivan的解决方案说明原始问题,如下所示。Carl的具有相同的结果,并且对于我给出的例子来说更简单一点,但是,我的情况将受益于在表中明确列出重命名对(即。Table2)。再加上使用带有Table.RenameColumns的MissingField.Ignore参数,这意味着它只会更改我想要在生产查询中重命名的列的选择,其余的将保持不变。

代码语言:javascript
复制
let

    //list of original column names 
    List1= {"Name1","Name2","Name3","Name4"},

    //Create test table
    Source = Table.FromRows({{1231,1233,4121,5232},{3546,3426,1246,3464}} , List1),

    //list of new column names
    List2 = {"NewName 1","NewName 2","NewName 3","NewName 4"},

    //Rename columns (in practice, the two lists of names will be dynamic, not hard coded as below)

    //Bring List1 and List2 together as rows in a table
    Table2 = Table.FromRows({List1,List2}),

    //Create a list of rename pairs 
    RenameList = Table.ToColumns(Table2),

    //Call to Table.RenameColumns 
    Result = Table.RenameColumns(Source, RenameList, MissingField.Ignore)

in
    Result
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34858733

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档