根据上一列的名称重命名列

问题描述 投票:0回答:1

我将文件与销售和数量列合并。 每个文件包含 2 或 3 年的数据。文件列示例: 客户| 2010 年销售 |数量 | 2011年销售|数量 问题是名称数量不包含年份。我想重命名这些列以获得 2010 年数量、2011 年数量等。 因此,从前一列的名称中取出 4 位数字,并将其与字符串数量连接起来。 当然是在电量查询中。

我尝试了以下方法: 对于每个表,这意味着在“转换文件”步骤中==> 获取列表中的列名称 使用索引列方法访问前一个值 单词数量和前一列名称的数字的串联

这可行,但很挑剔 有没有更简单的M代码?

powerquery rename
1个回答
0
投票

我建议目标是有一列用于销售,一列用于数量,一列用于年份。这是建议的方法。

使用这样的起始文件/表:
enter image description here

  1. 选择“客户”列,然后取消透视其他列
  2. 选择列(或属性)列并在 {space} 上拆分以获取年份
  3. 通过
    _
    再次选择列以标准化数量列
  4. 删除步骤 3 中多余的色谱柱
  5. 填写年份栏
  6. 最后,在“Column”列上旋转
let
  Source = Csv.Document(File.Contents("..\example.csv"), [Delimiter = ",", Columns = 5, Encoding = 65001, QuoteStyle = QuoteStyle.None]),
  #"Promoted headers" = Table.PromoteHeaders(Source, [PromoteAllScalars = true]),
  #"Unpivoted other columns" = Table.UnpivotOtherColumns(#"Promoted headers", {"cutomer"}, "Attribute", "Value"),
  #"Split column by delimiter" = Table.SplitColumn(#"Unpivoted other columns", "Attribute", Splitter.SplitTextByDelimiter(" "), {"Column", "Year"}),
  #"Split column by delimiter 1" = Table.SplitColumn(#"Split column by delimiter", "Column", Splitter.SplitTextByDelimiter("_"), {"Column", "Column.2"}),
  #"Removed columns" = Table.RemoveColumns(#"Split column by delimiter 1", {"Column.2"}),
  #"Filled down" = Table.FillDown(#"Removed columns", {"Year"}),
  #"Pivoted column" = Table.Pivot(Table.TransformColumnTypes(#"Filled down", {{"Column", type text}}), List.Distinct(Table.TransformColumnTypes(#"Filled down", {{"Column", type text}})[Column]), "Column", "Value")
in
  #"Pivoted column"

希望给您一个如下所示的结果表:
enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.