Power Query如何同时逆透视多组不同属性列?
在Power BI Power Query中批量转换多组产品列的方法
要一次性将Product X: Type/Product X: Cost这类成对列转换为Customer、Product Type、Product Cost的结构,无需多次逆透视再合并,用Power Query的逆透视配对列功能就能直接实现,步骤如下:
- 打开Power Query编辑器,加载目标表格
- 选中
Customer列(这是需要保留的非透视列) - 按住Ctrl键,选中所有
Product X: Type和Product X: Cost格式的列 - 切换到「转换」选项卡,点击「逆透视列」下拉菜单,选择逆透视配对列
- 此时表格会生成
Attribute.1(对应Product编号)、Attribute.2(对应Type/Cost)、Value三列,将这三列分别重命名为Product ID、Metric、Value - 选中
Metric列,再次切换到「转换」选项卡,点击「透视列」,值列选择Value,取消勾选「聚合值函数」(因为每个Product编号对应唯一的Type和Cost) - 最后将自动生成的
Type列重命名为Product Type,Cost列重命名为Product Cost,若不需要Product ID可直接删除该列
用M代码直接实现(更高效)
如果需要批量处理大量Product组,直接编写M代码更快捷,示例代码如下:
let 源 = Excel.CurrentWorkbook(){[Name="你的表名"]}[Content], // 替换为你的数据源 // 执行配对逆透视,指定保留列和成对的目标列 配对逆透视 = Table.UnpivotPairs(源, {"Customer"}, {"Product 1: Type", "Product 1: Cost"}, {"Product 2: Type", "Product 2: Cost"}, "Product ID", "Metric", "Value"), // 透视Metric列得到Type和Cost列 透视列 = Table.Pivot(配对逆透视, List.Distinct(配对逆透视[Metric]), "Metric", "Value"), // 重命名列并删除多余的Product ID列 重命名并整理 = Table.RenameColumns(Table.RemoveColumns(透视列, {"Product ID"}), {{"Type", "Product Type"}, {"Cost", "Product Cost"}}) in 重命名并整理
内容的提问来源于stack exchange,提问作者Andrew Barrett
相关产品推荐
相关产品推荐

