Power Query:合并表格前为各分组子表开头插入指定规则新行
Power Query 分组子表首行插入指定记录实现步骤
- 步骤1:源数据加载
将需要处理的源数据表导入Power Query编辑器,确认表中存在Metadata1、Column2及其他业务字段,字段名无拼写错误。 - 步骤2:行分组操作
选中分组依据的字段,点击「分组依据」,选择高级分组配置:- 按业务需求设置分组字段
- 新增聚合项,命名为
GroupedData,聚合操作选择「所有行」,点击确定后即可得到每个分组对应的嵌套子表。
- 步骤3:自定义列实现子表插行逻辑
点击「添加列」-「自定义列」,输入以下M公式,注意将公式中#"分组的行"替换为你上一步分组操作对应的实际步骤名称:
= Table.AddColumn(#"分组的行", "ProcessedData", (currentRow) => let SubTable = currentRow[GroupedData], // 取子表0起始索引为2的行对应的Column2值 TargetVal = try SubTable{2}[Column2] otherwise null, // 生成和子表字段结构完全匹配的空记录 BaseRecord = Record.FromList(List.Repeat({null}, Table.ColumnCount(SubTable)), Table.ColumnNames(SubTable)), // 给新记录的Metadata1字段赋值 NewRow = Record.TransformFields(BaseRecord, {"Metadata1", (x) => TargetVal}), // 首行(索引0位置)插入新记录 ResultTable = Table.InsertRows(SubTable, 0, {NewRow}) in ResultTable )
公式中加了
try...otherwise容错逻辑,若某分组子表行数不足3行(不存在索引为2的行),会自动给Metadata1赋值null,避免刷新报错,不需要容错可直接去掉该部分写法。
- 步骤4:结果展开
选中新增的ProcessedData列,点击列头的展开按钮,选择需要输出的字段,删除原有的GroupedData辅助列,即可得到符合要求的处理结果。
内容的提问来源于stack exchange,提问作者Rafał Czapiewski
相关产品推荐
相关产品推荐

