AddColumns、 DropColumns、 RenameColumns和 ShowColumns 函数

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

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

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

概览

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

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

表是 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 个记录。

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

备注

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

语法

AddColumnsTableOrRecordColumnName1, Formula1 [, ColumnName2Formula2, ... ] ]

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

DropColumnsTableOrRecord,ColumnName1 [, ColumnName2, ... ] )

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

RenameColumnsTableOrRecordOldColumnName1NewColumnName1 [、 OldColumnName2NewColumnName2、 ... ] )

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

ShowColumnsTableOrRecord,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) 重命名结果中的 UnitPriceQuantitySold 列。 包含 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 集合中的新表,在原始表流经函数时向其添加了一些内容,没有修改源:

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

映射组件中的列

请参阅映射列