Power Query合并表按日期条件统计申请与发货数量的实现咨询
该需求完全可以在Power Query中实现,核心是基于同客户同SKU分组,实现先进先出(FIFO)的发货量匹配逻辑,再配合日期参数做动态筛选即可,具体实现步骤如下:
实现步骤
1. 配置日期筛选参数
在Power Query编辑器中新建两个日期类型参数开始日期、结束日期,用来动态限定统计的时间范围,无需每次修改逻辑代码。
2. 预处理申请表(REQUESTED)
- 筛选表中
Date字段值介于开始日期和结束日期之间的记录 - 按
Client、SKU字段分组,每组内按Date升序排序,新增行索引列 - 新增
累计申请量列,计算当前行及之前所有行的ReqQuantity累加值,参考M代码片段:List.Sum(List.Range(#"排序后组内记录"[ReqQuantity], 0, [行索引] + 1))
3. 预处理发货表(SENT)
- 同样筛选
Date介于开始日期和结束日期之间的记录 - 按
Client、SKU分组,汇总得到每组的时间段内总发货量
4. 关联匹配发货量
将预处理后的申请表和发货表,按Client、SKU做左外合并,展开发货表的时间段内总发货量字段,逐行计算当前申请匹配的发货量:
- 组内第一行申请匹配量 = MIN(当前行ReqQuantity, 时间段内总发货量)
- 组内第N(N>1)行申请匹配量 = MAX(0, MIN(当前行ReqQuantity, 时间段内总发货量 - 上一行累计申请量))
如果时间段内总发货量小于之前行的累计申请量,后续申请的匹配量直接取0即可。
5. 输出结果
保留需要输出的字段:Date、ReqNumber、Client、SKU、ReqQuantity、匹配发货量,加载到数据模型后,修改开始日期和结束日期参数即可刷新得到对应范围的匹配结果,完全符合示例中的筛选效果。
内容的提问来源于stack exchange,提问作者Nir Strahman
相关产品推荐
相关产品推荐

