使用Power BI Query实现输入表到目标输出表的转换需求
Power BI Query 表格转换实现方案
输入输出结构说明
输入表格
| 产品名称 | 2020年销售额 | 2021年销售额 | 2022年销售额 |
|---|---|---|---|
| 产品A | 1000 | 1200 | 1500 |
| 产品B | 800 | 900 | 1100 |
目标输出表格
| 产品名称 | 年份 | 销售额 |
|---|---|---|
| 产品A | 2020 | 1000 |
| 产品A | 2021 | 1200 |
| 产品A | 2022 | 1500 |
| 产品B | 2020 | 800 |
| 产品B | 2021 | 900 |
| 产品B | 2022 | 1100 |
可视化操作步骤
- 将输入数据导入Power BI,进入查询编辑器
- 选中「产品名称」列,右键选择逆透视其他列(或点击顶部「转换」选项卡→「逆透视列」→「逆透视其他列」)
- 选中生成的「属性」列,右键选择重命名,改为「年份」;同理将「值」列重命名为「销售额」
- 选中「年份」列,点击顶部「转换」选项卡→「替换值」,在「查找内容」输入
年销售额,「替换为」留空,点击确定 - 可选:将「年份」列的数据类型改为整数,最终关闭并上载数据到模型
M代码直接实现
如果需要快速批量处理,可直接在查询编辑器的高级编辑器中替换以下代码(注意替换数据源为你的实际数据源):
let 源 = Excel.CurrentWorkbook(){[Name="输入表格"]}[Content], // 替换为你的数据源,比如CSV/数据库连接 规范数据类型 = Table.TransformColumnTypes(源,{{"产品名称", type text}, {"2020年销售额", Int64.Type}, {"2021年销售额", Int64.Type}, {"2022年销售额", Int64.Type}}), 逆透视非标识列 = Table.UnpivotOtherColumns(规范数据类型, {"产品名称"}, "属性", "值"), 重命名列 = Table.RenameColumns(逆透视非标识列,{{"属性", "年份"}, {"值", "销售额"}}), 清理年份文本 = Table.ReplaceValue(重命名列,"年销售额","",Replacer.ReplaceText,{"年份"}), 转换年份类型 = Table.TransformColumnTypes(清理年份文本,{{"年份", Int64.Type}}) in 转换年份类型
内容的提问来源于stack exchange,提问作者zzstar
相关产品推荐
相关产品推荐

