You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power Query查找筛选最早建议启动日期及数据保留问题

Power Query 实现保留最新数据并添加首次建议启动日期

问题核心

现有多源提取的表格,包含File_date、Project#、Sugg_Start_date及PM、描述等列,需要:

  1. 新增First_Sugg_Start列,显示每个项目的首次建议启动日期
  2. 仅保留File_date为最新的项目行,同时保留所有原有列
  3. 注意:未启动项目的Sugg_Start_date每日会更新为当日,不能直接筛选最早日期的行

原代码错误分析

你提供的分组及添加列代码存在多处语法和逻辑错误:

  • 语法错误:分组列的引号不匹配(如Project#_with_Task"缺失前引号、Sugg_Start未加引号),Table.Group的聚合参数格式错误,多余括号导致语法解析失败
  • 逻辑错误:用List.First取分组后的第一个值,无法保证是该项目的最早日期;分组时错误包含Sugg_Start列,导致分组维度错误;Table.AddColumn用法完全错误,没有关联原表的逻辑
  • 需求偏差:未处理“保留最新File_date数据”的核心要求,直接分组会丢失最新数据的原有列

正确解决方案

通过辅助表提取首次日期+筛选最新数据+合并关联的方式实现需求,以下是完整的M代码片段(假设原表名为Source):

// 1. 创建辅助表:按项目分组,提取每个项目的首次建议启动日期
#"提取首次启动日期" = Table.Group(Source, {"Project#"}, {
    {"First_Sugg_Start", each List.Min([Sugg_Start_date]), type date}
}),

// 2. 筛选出File_date为最新的所有行,保留全部原有列
#"获取最新日期" = List.Max(Source[File_date]),
#"筛选最新数据" = Table.SelectRows(Source, each [File_date] = #"获取最新日期"),

// 3. 合并最新数据与辅助表,添加首次启动日期列
#"合并查询" = Table.NestedJoin(#"筛选最新数据", {"Project#"}, #"提取首次启动日期", {"Project#"}, "临时表", JoinKind.LeftOuter),
#"展开首次日期列" = Table.ExpandTableColumn(#"合并查询", "临时表", {"First_Sugg_Start"}, {"First_Sugg_Start"})

关键细节说明

  • 用List.Min而非List.First:由于未启动项目的Sugg_Start_date每日更新,分组后的行顺序不一定按日期排序,List.Min能确保取到该项目的最早建议启动日期
  • 左连接合并:保证所有最新日期的项目行都被保留,即使极端情况下某个项目无历史启动日期数据
  • 保留原有列:先筛选最新数据再合并的逻辑,不会丢失PM、描述等任何原有列

内容的提问来源于stack exchange,提问作者Marie Rodriguez

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 15:55:53