AddColumns、 DropColumns、 RenameColumns和 ShowColumns 函数

适用于: 画布应用 Copilot Studio Desktop 流 模型驱动应用 Power Platform CLI Dataverse 函数

通过添加、删除、重命名和选择表列来塑造表或记录。

ForAll 函数还可以通过返回从现有列创建的新记录表来塑造表。

概览

这些函数通过调整表或记录的列来调整表或记录:

  • 将包含多个列的表或记录减少到单个列,以用于单列函数,例如 Lower 或 Sqrt。
  • 将计算列添加到表或记录(例如,显示按单价乘以数量的结果的总价格列)。
  • 使用更有意义的名称将列重命名,以便向用户显示或者在公式中使用。

表是 Power Apps 中的一个值,与字符串或数字类似。 可将表指定为公式中的参数,函数可以返回表作为结果。

备注

本主题中介绍的函数不会修改原始表。 这些函数将该表用作参数,并转换一个应用了转换的新表。 更多详细信息,请参阅使用表。

无法使用这些函数修改数据源的列。 必须在数据源中修改数据。 可以使用 Collect 函数将列添加到集合。 有关更多详细信息,请参阅使用数据源。

Description

该 AddColumns 函数将列添加到表或记录,公式定义该列中的值。 现有列保持不变。

为提供的记录或提供的表的每个记录计算公式。

当前正在处理的记录的字段在公式中可用。 可以使用 ThisRecord 运算符,也可以只按名称引用字段,就像引用任何其他值一样。 As 运算符也可用于为正在处理的记录命名,从而使您的公式更易于理解,并且使嵌套记录可以被访问。 有关详细信息,请参阅以下示例和使用记录范围。

该 DropColumns 函数从表或记录中排除列。 其他所有列保持不变。 DropColumns 排除列,并 ShowColumns 包括列。

RenameColumns通过提供至少一个参数对来重命名表或记录的一个或多个列,该参数对指定表或记录包含的列的名称(要替换的旧名称)以及表或记录不包含的列的名称(新名称, 要使用的项)。 旧名称必须已存在于表或记录中,并且新名称不得存在。 每个列名只能在参数列表中显示为旧列名或新列名一次。 若要将列重命名为现有列名,请首先删除现有列 DropColumns,或者通过将一个函数嵌套在另一个 RenameColumns 函数中,使现有列不行。

该 ShowColumns 函数包括表或记录的列,并删除所有其他列。 可用于 ShowColumns 从多列表或记录创建单列表或记录。 ShowColumns 包括列,并 DropColumns 排除列。

对于所有这些函数,结果是应用转换的新表或记录。 未修改原始表或记录。 不能使用公式修改现有表或记录。 SharePoint、Microsoft Dataverse、SQL Server 和其他数据源提供了用于修改列表和表列的工具,这些列通常称为架构。 本主题中的函数仅将输入表或记录(无需修改原始内容)转换为输出表或记录以供进一步使用。

这些函数的参数支持委派。 例如,即使 '[dbo].[AllListings]' 数据源包含一百万行,用作引入相关记录的参数的 Filter 函数也会搜索所有列表:

AddColumns( RealEstateAgents,
   Listings,
   Filter(  '[dbo].[AllListings]', ListingAgentName = AgentName )
)

不过,这些函数的输出有非委派记录限制。 在此示例中,即使 RealEstateAgents 数据源有 501 个或更多记录,也仅返回 500 个记录。

如果以这种方式使用 AddColumns , Filter 必须针对 RealEstateAgents 中每个第一条记录对数据源进行单独的调用,这会导致大量的网络聊天。 如果 [dbo](.[AllListings] 足够小并且不经常更改。 您可以在 OnStart 中调用 Collect 函数来在您的应用启动时在应用中缓存数据源。。 或者,您可以重组应用,以便仅在用户要求时才拉入相关记录。

备注

在 3.24042 版本之前的 Power Apps 中,列名是使用双引号的文本字符串指定的,如果连接到数据源,它们还需要是逻辑名称。 例如,使用带双引号的逻辑名称 "cr43e_name",而不是不带引号的显示名称 Name。 对于列名称带空格的 SharePoint 和 Excel 数据源,每个空格都用 "_x0020_" 指定,例如 "Column Name" 为 "Column_x0020_Name"。 在此版本之后,所有应用程序都自动更新到本文描述的新语法。

语法

AddColumns( TableOrRecord, ColumnName1, Formula1 [, ColumnName2, Formula2, ... ] ]

  • TableOrRecord - 必需。 要作的表或记录。
  • ColumnNames - 必需。 要添加的列的名称。
  • 公式 - 必需。 用于对每条记录求值的公式。 结果将添加为相应新列的值。 可以在此公式中引用表或记录的其他列。

DropColumns(TableOrRecord,ColumnName1 [, ColumnName2, ... ] )

  • TableOrRecord - 必需。 要作的表或记录。
  • ColumnNames - 必需。 要删除的列的名称。

RenameColumns( TableOrRecord、 OldColumnName1、 NewColumnName1 [、 OldColumnName2、 NewColumnName2、 ... ] )

  • TableOrRecord - 必需。 要作的表或记录。
  • OldColumnNames - 必需。 要从原始表或记录重命名的列的名称。 此元素首先出现在参数对中(或者如果公式包含多个对,则首先出现在每个参数对中)。
  • NewColumnNames - 必需。 替换后的名称。 此元素最后出现在参数对中(或者如果公式包含多个对,则最后出现在每个参数对中)。

ShowColumns(TableOrRecord,ColumnName1 [, ColumnName2, ... ] )

  • TableOrRecord - 必需。 要作的表或记录。
  • ColumnNames - 必需。 要包含的列的名称。

示例

本部分中的示例使用 IceCreamSales 数据源,其中包含下表中的数据:

IceCream 示例。

这些示例都不会修改 IceCreamSales 数据源。 每个函数将数据源的值转换为表,然后返回该值作为结果。

公式 Description 结果
AddColumns(IceCreamSales,收入,UnitPrice * QuantitySold) 将 Revenue 列添加到结果。 对于每条记录,将计算 UnitPrice * QuantitySold,并将结果放在新列中。 包含 Srawberry、Chocolate 和 Vanilla 的结果。
DropColumns(IceCreamSales,UnitPrice) 从结果中排除 UnitPrice 列。 使用此函数可排除列,并用于 ShowColumns 包含列。 包含 Srawberry、Chocolate、Vanilla 只有 QuantitySold 列的结果。
ShowColumns(IceCreamSales,味道) 仅在结果中包含 Flavor 列。 使用此函数包括列,并用于 DropColumns 排除它们。 仅 Flavor 列。
RenameColumns(IceCreamSales,UnitPrice,Price) 在结果中将 UnitPrice 列重命名。 包含 Flavor、Price 和 Revenue 的结果。
RenameColumns(IceCreamSales、UnitPrice、Price、QuantitySold、Number) 重命名结果中的 UnitPrice 和 QuantitySold 列。 包含 3 IceCreams 和 Flavor、Price、Revenue 列的结果。
DropColumns(
RenameColumns(
AddColumns(IceCreamSales,收入,
UnitPrice * QuantitySold ,
UnitPrice、Price 、
数量)
从公式内部开始,按顺序执行以下表转换:
  1. 根据针对每条记录计算 UnitPrice * Quantity 后的结果添加 Revenue 列。
  2. 将 UnitPrice 重命名为 Price。
  3. 排除 Quantity 列。
顺序很重要,例如,不能在重命名 UnitPrice 后计算该列。
单价的 IceCream 示例。

分步操作

我们来试验一下本文前面的一些示例。

  1. 通过添加 Button 控件创建一个集合,并将其 OnSelect 属性设置为此公式:

    ClearCollect( IceCreamSales,
       Table(
           { Flavor: "Strawberry", UnitPrice: 1.99, QuantitySold: 20 },
           { Flavor: "Chocolate", UnitPrice: 2.99, QuantitySold: 45 },
           { Flavor: "Vanilla", UnitPrice: 1.50, QuantitySold: 35 }
       )
    )
    
  2. 按住 Alt 键的同时选择此按钮以运行公式。

  3. 添加第二个 Button 控件,并将其 OnSelect 属性设置为此公式,然后运行它:

    ClearCollect( FirstExample,
       AddColumns( IceCreamSales, Revenue, UnitPrice * QuantitySold )
    )
    
  4. 在文件菜单上,选择集合,然后选择 IceCreamSales 以显示该集合。

    如此图所示,第二个公式未修改此集合。 该 AddColumns 函数使用 IceCreamSales 作为只读参数;该函数未修改该参数引用的表。

    显示不包含“收入”列的“冰淇淋销售”集合的三个记录的集合查看器。

  5. 选择 FirstExample。

    如此图所示,第二个公式返回带有添加列的新表。 ClearCollect 函数捕获了 FirstExample 集合中的新表,在原始表流经函数时向其添加了一些内容,没有修改源:

    显示包含新“收入”列的“第一个示例”集合的三个记录的集合查看器。

映射组件中的列

请参阅映射列。