Power Query合并月度数据至YTD文件的排序与标签纠错问题
解决Power Query合并零件YTD测量数据的两个核心问题
一、实现日期+测量批次的A/B交替排序
操作步骤(M代码实现)
- 提取纯日期列:如果原始数据只有完整时间戳,先拆分出纯日期(假设时间戳列名为
测量时间):= Table.AddColumn(之前的步骤名, "测量日期", each Date.From([测量时间])) - 按日期分组处理内部排序逻辑:
= Table.Group(上一步骤名, {"测量日期"}, { {"分组数据", each let // 按A/B版本分组,给每组行分配批次序号 按版本分组 = Table.Group(_, {"零件版本"}, {{"行数据", each Table.AddIndexColumn(_, "批次序号", 1, 1), type table}}), // 展开所有行数据 展开数据 = Table.ExpandTableColumn(按版本分组, "行数据", Table.ColumnNames(按版本分组[行数据]{0})), // 先按批次序号排序,再按版本排序,实现A1、B1、A2、B2的交替顺序 排序结果 = Table.Sort(展开数据, {{"批次序号", Order.Ascending}, {"零件版本", Order.Ascending}}) in 排序结果, type table} }) - 展开分组并整理结构:
最终可实现同日期内按批次+版本的交替排序,不受原始测量时间先后影响。= Table.ExpandTableColumn(上一步骤名, "分组数据", Table.ColumnNames(上一步骤名[分组数据]{0}))
二、自动识别并修正同一批次的重复版本标签
操作步骤(M代码实现)
基于上述排序后的结果,处理批次内的重复标签问题:
- 按日期+批次序号分组检查:
= Table.Group(排序后的步骤名, {"测量日期", "批次序号"}, { {"批次数据", each let // 获取当前批次的版本列表 版本列表 = [零件版本], // 判断并修正重复标签:若批次内全为A/B,自动补全缺失的版本 修正版本 = if List.Count(版本列表) = 2 then if List.ContainsAll(版本列表, {"A", "B"}) then 版本列表 else if List.AllTrue(List.Transform(版本列表, each _ = "A")) then {"A", "B"} else {"A", "B"} else 版本列表, // 将修正后的版本替换回原表 替换版本 = Table.FromColumns(Table.ToColumns(_) & {修正版本}, Table.ColumnNames(_) & {"修正后版本"}), // 移除旧版本列并重命名 整理列 = Table.RenameColumns(Table.RemoveColumns(替换版本, {"零件版本"}), {{"修正后版本", "零件版本"}}) in 整理列, type table} }) - 展开完成最终整理:
该逻辑会自动识别同一批次下的重复A/B标签,将重复项修正为缺失的版本,保证每个批次都是A、B各一份。= Table.ExpandTableColumn(上一步骤名, "批次数据", Table.ColumnNames(上一步骤名[批次数据]{0}))
注意事项
- 确保
零件版本列为文本类型,避免数据类型错误导致判断失效 - 若每日测量次数有变动,可调整
修正版本中的判断逻辑适配场景
内容的提问来源于stack exchange,提问作者LightOfTheNight
相关产品推荐
相关产品推荐

