You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI销售数据清洗:合并重复行求和及月度最大销售额查询

Power BI销售数据清洗与聚合的正确实现步骤

针对你在DataCamp《Data Transformation in Power BI》课程里的需求——用转置、逆透视清洗Sales_1997数据,移除region列后按company name、year、month合并求和total sales,再找出单月最大交易销售额,以下是准确的操作流程,避开你之前踩的拼接错误坑:

1. 初始数据预处理

  • 加载Sales_1997数据后,选中region列,右键选择删除,直接去掉不需要的列。
  • 检查表头:如果是多级表头,点击转换选项卡→将第一行用作标题,整理成规范的单级表头,避免后续操作混乱。

2. 用逆透视替代手动转置(更高效避错)

如果原始数据是宽表(每月销售额单独成列),别手动转置后拼接,直接用逆透视一步到位:

  • 选中emp ID、company name这类维度列,然后点击转换→逆透视列→逆透视其他列。这一步会自动把所有月份列转成两列:Attribute(存储月份/年月信息)和Value(对应销售额),完全避免你之前转置后拼接的错误。

3. 拆分出year和month列

根据Attribute列的格式处理:

  • 如果是1997-01这种格式:选中该列,点击转换→拆分列→按分隔符(选-),拆成year和month列,再把它们改成数值类型。
  • 如果是Jan 1997这种格式,用M代码提取:
// 添加年份列
= Table.AddColumn(#"逆透视的列", "year", each Text.Range([Attribute], 4, 4), Int64.Type)
// 添加月份列(自动转成数字)
= Table.AddColumn(之前的步骤名, "month", each Date.Month(Date.FromText([Attribute])), Int64.Type)

4. 合并重复行并求和total sales

  • 选中company name、year、month三列,点击转换→分组依据:
    • 选择高级模式,添加三个分组列:company name(文本类型)、year(数值)、month(数值)
    • 新增聚合列,命名为total sales,操作选求和,对应列选之前的Value(销售额列)

5. 修正你之前的转置拼接错误(若一定要用转置)

你之前用Table.CombineColumns出现重复拼接,是因为转置后列的对应关系错了。如果非要用转置,正确流程是:

// 转置后先把第一行设为表头
= Table.PromoteHeaders(#"Transposed Table", [PromoteAllScalars=true])
// 只合并真正的年、月列,别选错列
= Table.CombineColumns(Table.TransformColumnTypes(之前的步骤名, {{"你的年份列名", type text}, {"你的月份列名", type text}}), {"你的年份列名", "你的月份列名"}, Combiner.CombineTextByDelimiter(" ", QuoteStyle.None), "Year-Month")

但还是强烈推荐用逆透视,步骤更少,出错概率低。

6. 找出单月最大销售额

最后要找单月某公司的最大销售额,有两种简单方法:

  • 方法1:添加自定义列
= Table.AddColumn(#"分组的行", "单月最大销售额", each List.Max(Table.SelectRows(#"分组的行", (x)=>x[company name]=[company name] and x[year]=[year] and x[month]=[month])[total sales]))
  • 方法2:排序筛选
    按company name、year、month排序,然后对每组的total sales降序排列,取第一行就是该组的最大值。

内容的提问来源于stack exchange,提问作者freeFallwaterFall

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 19:27:43