AddColumns、DropColumns、RenameColumns 和 ShowColumns 函数

适用于: 画布应用 桌面流 模型驱动应用 Power Platform CLI

通过添加、删除、重命名和选择来为表造型。

**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"。 在此版本之后,所有应用程序都自动更新到本文描述的新语法。

语法

AddColumns(表,ColumnName1公式 1[, ColumnName2公式 2 ,... ])

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

DropColumnsColumnName1 [, ColumnName2,... ])

  • Table - 必需。 要运算的表。
  • ColumnNames - 必需。 要删除的列的名称。

重命名列(表,旧列名 1新列名 1[, 旧列名 2新列名 2 ,... ])

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

ShowColumnsColumnName1 [, ColumnName2,... ])

  • Table - 必需。 要运算的表。
  • ColumnNames - 必需。 要包含的列的名称。

示例

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

IceCream 示例。

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

公式 Description 结果
AddColumns(IceCreamSales,Revenue,UnitPrice * QuantitySold) Revenue 列添加到结果。 对于每条记录,将计算 UnitPrice * QuantitySold,并将结果放在新列中。 包含 Srawberry、Chocolate 和 Vanilla 的结果。
DropColumns(IceCreamSales,UnitPrice) 从结果中排除 UnitPrice 列。 使用此函数可排除列,使用 ShowColumns 可包含列。 包含 Srawberry、Chocolate、Vanilla 只有 QuantitySold 列的结果。
ShowColumns(IceCreamSales,口味) 仅在结果中包含 Flavor 列。 使用此函数可包含列,使用 DropColumns 可排除列。 仅 Flavor 列。
重命名列(IceCreamSales、UnitPrice、Price) 在结果中将 UnitPrice 列重命名。 包含 Flavor、Price 和 Revenue 的结果。
RenameColumns(IceCreamSales,UnitPrice,Price,QuantitySold,Number) 重命名结果中的 UnitPriceQuantitySold 列。 包含 3 IceCreams 和 Flavor、Price、Revenue 列的结果。
DropColumns(
RenameColumns(
AddColumns( IceCreamSales, Revenue,
UnitPrice * QuantitySold ),
UnitPrice, Price ),
Quantity )
从公式内部开始,按顺序执行以下表转换:
  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 集合中的新表,在原始表流经函数时向其添加了一些内容,没有修改源:

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

映射组件中的列

请参阅映射列