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

咨询:PowerQuery中Table.FromRecords未返回全部列,如何获取所有列?

在Power Query中让Table.FromRecords生成包含所有可能列的表格方法

当使用Table.FromRecords函数时,如果记录列表里不同记录的字段不完全一致,默认只会基于第一条记录的字段生成表格列,导致后续记录中的额外字段被忽略——比如你给出的示例里,第三行的Email字段就没有出现在结果表格中。

要生成包含所有可能列的表格,有两种常用方法:

方法一:手动指定所有列名

直接在Table.FromRecords的第二个参数位置,传入包含所有可能字段的列表,这样函数就会按照这个列表生成列,缺失的字段会根据第三个参数(这里是MissingField.UseNull)填充为null。修改后的代码如下:

= Table.FromRecords({
    [CustomerID = 1, Name = "Bob", Phone = "123-4567"],
    [CustomerID = 2, Name = "Jim", Phone = "987-6543"],
    [CustomerID = 3, Name = "Paul", Phone = "543-7890", Email = "hello@microsoft.com"]
  }, {"CustomerID", "Name", "Phone", "Email"}, MissingField.UseNull)

这种方法适合提前知道所有字段的场景,操作简单直接。

方法二:动态提取所有列名

如果记录数量多、字段不固定,手动列名太繁琐,可以通过代码动态提取所有记录的字段名,再传给Table.FromRecords:

let
    RecordsList = {
        [CustomerID = 1, Name = "Bob", Phone = "123-4567"],
        [CustomerID = 2, Name = "Jim", Phone = "987-6543"],
        [CustomerID = 3, Name = "Paul", Phone = "543-7890", Email = "hello@microsoft.com"]
    },
    // 提取所有记录的字段名并去重
    AllColumns = List.Union(List.Transform(RecordsList, Record.FieldNames)),
    // 生成包含所有列的表格
    ResultTable = Table.FromRecords(RecordsList, AllColumns, MissingField.UseNull)
in
    ResultTable

这段代码的逻辑是:先用List.Transform把每个记录转换成对应的字段名列表,再用List.Union合并所有列表并去重,得到所有存在的字段名,最后用这个字段名列表生成表格。这种方法能自动适配记录中新增的字段,无需手动修改列名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 14:35:01