Power Query 基于双条件分组实现订单维度数据统计的操作方法
Power Query 实现表格转换操作步骤
- 第一步:将原始数据加载到Power Query编辑器,选中不需要的
XX、YY、ZZ三列,右键选择「删除列」,仅保留Order Nr、Key、Status三列即可。 - 第二步:执行分组聚合操作,按
Order Nr维度计算三个指标:- 点击顶部「转换」选项卡下的「分组依据」按钮
- 分组依据字段选择
Order Nr - 依次添加三个自定义聚合列:
- 列名:
ABC,操作选「自定义」,聚合公式输入:List.AnyTrue(List.Transform([Key], each Text.StartsWith(_, "ABC"))) - 列名:
XYZ,操作选「自定义」,聚合公式输入:List.AnyTrue(List.Transform([Key], each Text.StartsWith(_, "XYZ"))) - 列名:
Active,操作选「自定义」,聚合公式输入:List.AnyTrue(List.Transform([Status], each _ = "B" or _ = "C"))
- 列名:
- 第三步(可选):如果需要输出大写的
TRUE/FALSE文本格式,可选中三个布尔列,先修改列类型为「文本」,再使用「格式」-「大写」功能统一转换格式。
完整M代码示例
let // 此处的源替换为你自己的数据源引用即可 源 = Excel.CurrentWorkbook(){[Name="原始表"]}[Content], // 删除无关列 删除无用列 = Table.RemoveColumns(源,{"XX", "YY", "ZZ"}), // 按订单号分组计算所有指标 分组聚合 = Table.Group(删除无用列, {"Order Nr"}, { {"ABC", each List.AnyTrue(List.Transform([Key], (x)=>Text.StartsWith(x, "ABC"))), type logical}, {"XYZ", each List.AnyTrue(List.Transform([Key], (x)=>Text.StartsWith(x, "XYZ"))), type logical}, {"Active", each List.AnyTrue(List.Transform([Status], (x)=>x="B" or x="C")), type logical} }) in 分组聚合
注:你给出的示例结果中Order Nr=100的Active值为FALSE,和规则描述存在冲突:按规则100存在Status为B、C的记录,实际计算结果会返回TRUE,可根据实际业务需求调整判断逻辑。
内容的提问来源于stack exchange,提问作者Aaron
相关产品推荐
相关产品推荐

