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

如何用Power Query按ID提取首次呼叫日期与最近呼叫代理?

问题解决:按Id提取首次呼叫日期与最近呼叫代理

需求说明

针对每个唯一的Id,提取两个关键信息:

  1. 该Id的首次呼叫日期
  2. 该Id最近一次呼叫对应的代理名称
    示例输出:Id为16468的首次呼叫日期为02-01-2023,最近呼叫的代理为ANGEL(基于该Id的最近呼叫日期)

正确Power Query实现代码

替换你现有代码为以下内容即可:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    // 统一数据类型,确保日期和Id格式正确
    #"设置数据类型" = Table.TransformColumnTypes(Source,{
        {"Id", Int64.Type}, 
        {"call date", type date}, 
        {"Agent name", type text}
    }),
    // 按Id分组,聚合所需字段
    #"按Id分组" = Table.Group(#"设置数据类型", {"Id"}, {
        {"首次呼叫日期", each List.Min([call date]), type date},
        {"最近呼叫代理", each 
            let 
                // 筛选出当前Id的最大日期对应的行
                最大日期 = List.Max([call date]),
                对应代理 = Table.SelectRows(_, each [call date] = 最大日期)[Agent name]{0}
            in 对应代理, type text}
    }),
    // 可选:将日期格式转为示例中的dd-mm-yyyy样式
    #"格式化日期" = Table.TransformColumns(#"按Id分组", {
        {"首次呼叫日期", each Date.ToText(_, "dd-MM-yyyy"), type text}
    })
in
    #"格式化日期"

代码说明

  1. 设置数据类型:统一Id、呼叫日期、代理名称的格式,避免后续聚合出错
  2. 按Id分组:
    • 用List.Min([call date])直接获取每个Id的首次呼叫日期
    • 先通过List.Max([call date])找到每个Id的最近呼叫日期,再筛选出对应行的代理名称
  3. 格式化日期:可选步骤,将日期转为示例中的dd-MM-yyyy格式

原有代码的问题

你拆分了唯一Id表和日期表,但没有将两者关联并做聚合操作,自然无法得到每个Id对应的首次日期和最近代理。通过Table.Group可以一步完成分组和聚合,效率更高。


内容的提问来源于stack exchange,提问作者Saurabh Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 14:20:27