Power Query:如何基于Group ID列生成分组内自增Index列
Power Query 按分组生成组内自增索引操作方法
界面操作步骤(无需手写代码)
- 提前整理好数据顺序:如果需要组内索引按特定业务规则排序,先对全表按对应字段完成排序,没有特殊排序要求就保持数据原始加载顺序即可
- 选中「Group ID」列,点击顶部菜单栏「分组依据」
- 在分组配置弹窗中,分组列保持选中「Group ID」,新增聚合列命名为
Temp,聚合规则一定要选择「所有行」,不要选求和、计数这类其他聚合方式,点击确认,此时会得到仅包含「Group ID」和Temp两列的分组表,Temp列存储每个分组对应的所有行数据 - 点击
Temp列标题右上角的展开箭头,先不要选展开列,选择「添加索引列」选项,在弹出的配置框中设置起始值为1、步长为1,确认后会自动给每个分组的子表加上从1开始的连续索引 - 再次点击
Temp列的展开箭头,勾选你需要保留的所有业务列,取消勾选「使用原始列名作为前缀」,确认展开后即可得到目标索引列,最后可根据需要将索引列重命名为Index即可。
M代码快速实现
如果熟悉Power Query的M公式,可直接在高级编辑器中添加对应步骤,核心逻辑是分组后给每个子表追加索引列,核心代码片段如下:
// 假设上一步骤名为#"Sorted Rows",替换成你自己的实际步骤名即可 #"Added Group Index" = Table.Group(#"Sorted Rows", {"Group ID"}, { {"GroupData", each Table.AddIndexColumn(_, "Index", 1, 1), type table} }), #"Expanded GroupData" = Table.ExpandTableColumn(#"Added Group Index", "GroupData", {"Index", "你的其他业务列名1", "你的其他业务列名2"})
踩坑提示:如果分组前没有提前固定排序,后续刷新数据时可能因为数据源顺序变动导致索引对应关系错乱,有固定排序需求一定要在分组前加排序步骤。
内容的提问来源于stack exchange,提问作者Floren
相关产品推荐
相关产品推荐

