适用于: 画布应用
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 数据源,其中包含下表中的数据:
这些示例都不会修改 IceCreamSales 数据源。 每个函数将数据源的值转换为表,然后返回该值作为结果。
| 公式 | Description | 结果 |
|---|---|---|
| AddColumns(IceCreamSales,收入,UnitPrice * QuantitySold) | 将 Revenue 列添加到结果。 对于每条记录,将计算 UnitPrice * QuantitySold,并将结果放在新列中。 |
|
| DropColumns(IceCreamSales,UnitPrice) | 从结果中排除 UnitPrice 列。 使用此函数可排除列,并用于 ShowColumns 包含列。 |
|
| ShowColumns(IceCreamSales,味道) | 仅在结果中包含 Flavor 列。 使用此函数包括列,并用于 DropColumns 排除它们。 |
|
| RenameColumns(IceCreamSales,UnitPrice,Price) | 在结果中将 UnitPrice 列重命名。 |
|
| RenameColumns(IceCreamSales、UnitPrice、Price、QuantitySold、Number) | 重命名结果中的 UnitPrice 和 QuantitySold 列。 |
|
|
DropColumns( RenameColumns( AddColumns(IceCreamSales,收入, UnitPrice * QuantitySold , UnitPrice、Price 、 数量) |
从公式内部开始,按顺序执行以下表转换:
|
|
分步操作
我们来试验一下本文前面的一些示例。
通过添加 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 } ) )按住 Alt 键的同时选择此按钮以运行公式。
添加第二个 Button 控件,并将其 OnSelect 属性设置为此公式,然后运行它:
ClearCollect( FirstExample, AddColumns( IceCreamSales, Revenue, UnitPrice * QuantitySold ) )在文件菜单上,选择集合,然后选择 IceCreamSales 以显示该集合。
如此图所示,第二个公式未修改此集合。 该 AddColumns 函数使用 IceCreamSales 作为只读参数;该函数未修改该参数引用的表。
选择 FirstExample。
如此图所示,第二个公式返回带有添加列的新表。 ClearCollect 函数捕获了 FirstExample 集合中的新表,在原始表流经函数时向其添加了一些内容,没有修改源:
映射组件中的列
请参阅映射列。