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

基于双列关联值合并行:Power Query代码链式分组实现求助

Power Query 链式代码分组实现方案

核心实现步骤

  1. 统一数据类型
    先确保A、B两列都是文本类型,避免因类型不匹配导致关联失效:

    转换类型 = Table.TransformColumnTypes(Source,{{"A", type text}, {"B", type text}})
    
  2. 识别链式结构的起点
    筛选出所有B值不在A列中的条目,这些值就是每个链式结构的根节点(起点):

    起点列表 = List.Distinct(Table.SelectRows(转换类型, each not List.Contains(转换类型[A], [B]))[B])
    
  3. 编写递归函数遍历完整链条
    自定义递归函数,从每个起点出发,逐层获取所有关联的子节点,拼接成完整链条:

    获取完整链条 = (当前代码 as text) as list =>
        let
            子节点 = Table.SelectRows(转换类型, each [B] = 当前代码)[A],
            子链条 = List.Transform(子节点, (x) => 获取完整链条(x)),
            完整链条 = if List.IsEmpty(子节点) then {当前代码} else {当前代码} & List.Combine(子链条)
        in
            完整链条
    
  4. 生成结果表格
    基于起点列表生成每个链条的记录,再转换为表格,可选拆分链条为多级列:

    链条列表 = List.Transform(起点列表, (x) => [起点=x, 完整链条=获取完整链条(x)]),
    结果表格 = Table.FromRecords(链条列表),
    // 可选:拆分链条为多级列
    拆分链条列 = Table.SplitColumn(结果表格, "完整链条", Splitter.SplitByNothing(), List.Transform({1..List.Max(List.Transform(结果表格[完整链条], List.Count))}, each "链条"&Text.From(_)))
    

常见报错排查(针对你之前的NextCodes报错)

  • 数据类型不统一:检查A、B列是否同为文本/数字,类型不匹配会导致子节点筛选失败
  • 递归边界未处理:函数中需判断子节点为空的情况,避免无限递归或空列表拼接错误
  • 起点识别错误:若误将非根节点作为起点,会导致链条重复或断裂

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 06:44:50