使用列表、记录或表结构化列 (Power Query)

应用对象
Microsoft 365 专属 Excel Excel 2024 Excel 2021 Excel 2019 Excel 2016

对于结构化列(如 ListRecordTable),存在与该列关联的相关值。 结构化列在列标题中具有“展开”图标 “ 展开列”图标

关于结构化列

结构化列分为三种类型:

  • 列表 存储值列表,例如,{ 1, 2, 5, 10 } 或 { “hello”, “hi”, “good bye” }。 单元格中的 List 值是最简单的结构化列,没有表关系。
  • Record 存储一组分组到一个单元中的命名字段。 例如 [ FirstName = “Joe”, LastName = “Smith”, Birthdate = #date (2010, 1, 2) ]。 单元格中的 Record 值表示与当前表或主表的一对一表关系。
  • 表格 存储与当前数据(即主表)有次要关系的表。 单元格中的 Table 值指示与当前表或主表的一对多关系。

记录结构化列表示数据源中具有关系模型的关系,例如 OData 源中具有外键关联的实体或 SQL Server 数据库中具有外键关系的实体。

关于展开表结构化列

可以使用 展开展开列图标 查看相关表中的列。 例如,在 Orders 表中,展开操作将与 Order 表相关的Order_Details记录汇集在一起,以将订单行项与每个订单合并。 展开操作会扩大主表以包含辅助表和相关表中的列。 为了说明:

主表具有列 AB

A 列和 B 列

相关表包含列 C

A 列、B 列和相关的 C 列

展开操作会扩大主表以包括列 C ,并使用包含列 C 的辅助表和相关表中的相关值展开主表。

ABC

总而言之,当您展开 结构化列时,值将与数据预览中的其他列一起显示。 有关合并主表和相关表的详细信息,请参阅 了解如何合并多个数据源。 

展开表结构化列

在此示例中,展开操作会扩大 Order 表以包括 Order_Details.ProductIDOrder_Details.UnitPriceOrder_Details.Quantity 列,以便将主表 Order 行和相关表 Order_Details 行合并在一起。

结构化表数据示例

  1. 若要打开查询,请找到之前从 Power Query 编辑器加载的查询,在数据中选择一个单元格,然后选择“查询编辑>。 有关详细信息,请参阅 在 Excel 中创建、加载或编辑查询

    备注 该查询必须至少有两个在关系中联接的表。 有关详细信息,请参阅 合并查询。 

  1. 单击结构化列的列标题中的展开 图标 (展开 ) 。

  2. 在“ 列名称 ”下拉列表中,选择所需的列并清除不需要的列。 

    选择列名称

  3. 选择“确定”。

结果

现在,该表为步骤 3 中选择的每一列包含一个新列。 

展开结构化表列的结果

展开记录结构化列

展开 “记录 ”结构化列时,值将在数据预览中显示为新列。 如果未展开它,然后将查询加载到工作表,则会看到列中每个单元格的占位符值 [Record]。

  1. 若要打开查询,请找到之前从 Power Query 编辑器加载的查询,在数据中选择一个单元格,然后选择“查询编辑>。 有关详细信息,请参阅 在 Excel 中创建、加载或编辑查询

  2. 若要在不展开列的情况下查看特定值,请在结构化列中选择具有 “记录 ”值的值。 例如:

    展开记录复杂列

  3. 在结构化列的列标题中选择展开 图标 (展开 ) 。

  4. 在“ 列名称 ”下拉列表中,选择所需的列并清除不需要的列。

    单击“展开”以获取结构化记录列

  5. 选择“确定”。

结果

现在,该表为步骤 4 中选择的每一列包含一个新列。 

展开结构化记录列的结果

展开列表结构化列

展开列表结构化列时,值将在数据预览中显示为新列。 如果未展开它,然后将查询加载到工作表,则会看到列中每个单元格的占位符值 [List]。

  1. 若要打开查询,请找到之前从 Power Query 编辑器加载的查询,在数据中选择一个单元格,然后选择“查询编辑>。 有关详细信息,请参阅 在 Excel 中创建、加载或编辑查询

  2. 若要在不展开列的情况下查看特定值,请在结构化列中选择具有 列表 值的值。 例如:

    展开列表复杂列

  3. 在结构化列的列标题中选择展开 图标 (展开 ) 。

  4. 执行下列操作之一:

    • 要为每个列表值创建行,请选择“ 展开到新行”。
    • 若要创建由分隔符分隔的文本值列表,请选择“ 提取值”
  5. 选择“确定”。

“展开到新行”的结果

按行展开结构化列表列的结果

以分号 (;) 作为分隔符的提取值的结果

通过使用分隔符提取值来展开结构化列表列的结果

使用结构化列组中的命令

可以使用 Power Query 编辑器功能区上的以下附加命令来处理结构化列:

  1. 选择 “初始>转换 ”,然后在 “结构化列 ”组中选择以下命令之一。
    展开 将列表、记录或表) (结构化列提升为当前查询表中的新列和行。 此命令与 展开图标相同

    聚合使用聚合函数(包括 SumCount)汇总结构化列中的值。 此命令与选择“展开展开”图标,然后在“列名称”下拉对话框中选择“聚合”相同。 它仅适用于 结构化列。

    提取值 通过使用指定的分隔符将结构化 列表 列的值合并为单个文本值,提取这些列的值。

备注您还可以使用“数字列”组中的“统计信息”命令 (“选择转换>统计量”) 具有结构化列。 它具有与 Power Query 编辑器功能区中“列表工具”下的“转换上下文”选项卡的“数值列表”组中的“统计信息”命令相同的聚合函数列表。

使用“转换上下文”选项卡

可以使用“向下钻取”命令在 Power Query 编辑器功能区的“列表工具”下显示“转换上下文”选项卡,并显示其他用于结构化列的命令。 不要将此“转换”选项卡与 Power Query 编辑器功能区常规提供的其他“转换”选项卡混淆。

  1. 右键单击列标题,然后选择“ 向下钻取”。
  2. 若要将列表记录转换为表,请在列表工具下选择>转换为
  3. 若要保留顶部、底部或一系列项目,请在 “列表工具”下选择“ 转换>保留项目”。
  4. 若要删除顶部、底部或备用项目,请在 “列表工具”下选择“ 转换>删除项目”。
  5. 若要删除重复值,请在 “列表工具”下选择“ 转换>”“删除重复项”。 有关详细信息,请参阅 保留或删除重复行
  6. 若要反转项目,请在 “列表工具”下,选择“ 转换>反转项目”。
  7. 若要对数据进行排序,请在“ 列表工具”下,选择 Excel 中的“升 A 到 Z 排序”命令,该命令将 A 到 Z 或最小数到最大数进行排序 ,或在 Excel 中选择“降 Z 到 A”命令,该命令将 Z 到 A 或最大数到最小数排序 。 有关详细信息,请参阅 对数据进行排序
  8. 要显示各种统计信息,请在 “列表工具” 下选择“ 转换>统计信息”。 提供以下统计信息:SumMinimumMaximumMedianAverageStandardDeviationCount ValuesCount Distinct Values。 有关详细信息,请参阅 聚合列中的数据

另请参阅

Microsoft Power Query for Excel 帮助

合并查询

分组或汇总行 (docs.com)