PowerQueryPowerQuery

PowerQuery中为动态列重命名的方法

2018-02-27  本文已影响103人  PowerQuery

注:本文和之前的PowerQuery中列名动态化方法有关联,只不过本例处理的是特定一个单列的重命名问题。
【需求】对下图中的动态列进行列名重命名(图中“海伦堡地产.csv”是动态列名)。

需重命名的列
这个动态列产生的原因在于合并文件夹下多个文件时带来。由于不知道该文件下哪一个文件会排在最前面,从而导致该列是动态的。在实际应用中我们需要将其命名为一个有意义的名称,如“客户”。

最直观的思路是确保该列排在第一(一般情况下确实如此),这样可以用

  = Table.RenameColumns(#"Promoted Headers",{{List.First(Table.ColumnNames( #"Promoted Headers"), "客户"}})

来实现我们的目标。

但是万一这一列因为某种原因不是排在第一列了,上面的方法会出错。因此有了第二种办法。

第二种办法是寻找动态列的共性。在本例中无论动态列内容怎么变化,该列列名都有“.csv”这个文件后缀。因此,可以从这里入手。

用List.Select()函数来筛选包含“.csv”字符的元素,这样可以得到一个包含一个元素的list,再用list{index}的方法(其实用List.First()函数也可以)获取到这个元素本身,接下来依然是常规的重命名列的方式:

= Table.RenameColumns(#"Promoted Headers",{{List.Select(Table.ColumnNames( #"Promoted Headers"),each Text.Contains(_,"csv")){0}, "客户"}})
上一篇下一篇

猜你喜欢

热点阅读