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
相关产品推荐
相关产品推荐

