PowerBI:Power Query:处理因数据透视而更改的列名
Posted
技术标签:
【中文标题】PowerBI:Power Query:处理因数据透视而更改的列名【英文标题】:PowerBI: Power Query: Dealing with changing column names due to pivots 【发布时间】:2021-11-22 19:02:59 【问题描述】:对于我正在制作的报告。我有一个日期列。我从该列中提取月份,然后旋转月份。
例如,我可能有一个类似的表格:
Part# | Month | Qty |
---|---|---|
1 | 1 | 10 |
1 | 2 | 10 |
1 | 3 | 10 |
1 | 4 | 10 |
1 | 5 | 10 |
1 | 6 | 10 |
当我旋转它时它变成:
Part# | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
1 | 10 | 10 | 10 | 10 | 10 | 10 |
然后我重命名这些列并执行一些其他任务,例如创建最大值列。 但是,由于我提取的数据只有 6 个月的价值。这些列的名称将会改变。 未来可能是:
Part# | 4 | 5 | 6 | 7 | 8 | 9 |
---|---|---|---|---|---|---|
1 | 10 | 10 | 10 | 10 | 10 | 10 |
这样一行:
Table.ReplaceValue(#"Pivoted Column",null,0,Replacer.ReplaceValue,"1", "2", "3", "4", "5", "6")
当列是 4,5,6,7,8,9 时会产生错误。有没有办法处理这个问题?
【问题讨论】:
【参考方案1】:您需要手动编写一个步骤来重命名数据透视后的列。
此 M 代码从 Excel 中的当前工作簿中提取与示例中的表类似的表,然后按照您的描述进行透视,然后将列重命名为 Part#、1st、2nd、3rd、4th、5th 和 6th。是的,我说它重命名为 Part#,尽管它并没有真正改变该列名。确保在步骤中编码的列表中包含 Part#,即使 Part# 名称并没有真正改变,因为您需要考虑 Table.ColumnNames 提取的所有列名。将 1st、2nd、3rd、4th、5th 和 6th 替换为您的所需的列名。
let
Source = Excel.CurrentWorkbook()[Name="Table1"][Content],
#"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(Source, "Month", type text, "en-US"), List.Distinct(Table.TransformColumnTypes(Source, "Month", type text, "en-US")[Month]), "Month", "Qty"),
#"Renamed Columns" = Table.RenameColumns(#"Pivoted Column", List.Zip(Table.ColumnNames(#"Pivoted Column"),"Part#", "1st", "2nd", "3rd", "4th", "5th", "6th"))
in
#"Renamed Columns"
List.Zip 将两个列表交织在一起。在这里,它交织来自原始列名的 Part#(那些在“Pivoted Column”步骤的表中),然后从编码为 #"Renamed Columns 的列表中的 Part#,然后是下一个原始列名(来自第一个示例的 1 或 4来自您的第二个示例),然后是编码为 #"Renamed Columns 的列列表中的第一个,然后是下一个原始列名(第一个示例中的 2 个或第二个示例中的 5 个),然后编码为 #"Renamed 的列列表中的第 2 个列等等。这设置了 Table.RenameColumns 所需的列表。
【讨论】:
【参考方案2】:您可以使用TableColumNames
获取列名列表,然后您可以转换该列表。因此,对于您的示例,您可以使用以下内容:
= Table.ReplaceValue(#"Pivoted Column",null,0,Replacer.ReplaceValue,List.Skip(Table.ColumnNames(#"Pivoted Column"),1))
【讨论】:
以上是关于PowerBI:Power Query:处理因数据透视而更改的列名的主要内容,如果未能解决你的问题,请参考以下文章
谈一谈你在powerbi或者powerquery中学到的技能?以及怎么解决实际问题?
Powerbi复制 VS 引用:Power Query中对数据源的处理
Power BI:多个表作为 Power Query 中 Python 的输出
PowerBI 核心组件介绍(Power Query&Power Pivot & Power View& Power BI)