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

Power Query如何展开SharePoint列表中所有层级的嵌套表

混合类型嵌套列全量展开方案(Power Query M 语言实现)

针对SharePoint列表返回的混合值嵌套结构,可通过自定义递归函数直接绕过界面限制,自动识别所有嵌套层级的表/记录完成展开,无需手动逐列操作:

操作步骤

  • 进入Power Query编辑器,在「主页」选项卡选择「高级编辑器」,先确认你的原始加载表的步骤名,比如默认是源
  • 新建空白查询:右键左侧查询面板→「新建查询」→「其他源」→「空白查询」,重命名为fnExpandNested,将以下代码粘贴到该查询的高级编辑器中:
(input as any) as any =>
let
    类型判断 = 
        // 处理表类型值
        if Value.Is(input, type table) then
            let
                // 先对表内所有列递归执行当前函数
                列递归处理 = Table.TransformColumns(input, List.Transform(Table.ColumnNames(input), (col) => {col, (val) => @fnExpandNested(val)})),
                // 展开所有剩余的列表/表列
                全列展开 = Table.ExpandListColumn(列递归处理, Table.ColumnNames(列递归处理){0})
            in
                全列展开
        // 处理记录类型值
        else if Value.Is(input, type record) then
            @fnExpandNested(Record.ToTable(input))
        // 普通值直接返回
        else
            input
in
    类型判断
  • 回到你的原始数据表查询,新增自定义步骤:在编辑栏输入= fnExpandNested(源)(如果你的原始表步骤名不是源,替换成对应名称即可),回车后系统会自动完成所有层级的嵌套展开

常见问题处理

  • 如果展开后出现重复列名,Power Query会自动添加数字后缀,你可以按需批量重命名即可
  • 若嵌套层级超过20层,可以给函数增加深度计数参数,避免栈溢出:修改函数定义为(input as any, optional depth as number = 0) as any,并在递归调用时传入depth + 1,设置depth > 20时直接返回原值即可
  • 部分行展开后出现空值,对应原始行没有对应嵌套字段,属于正常结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 17:15:00