隐藏

GroupBy 和 Ungroup 函数

发布:2024/9/26 23:11:18作者:管理员 来源:本站 浏览次数:19


本文内容


   Description

   语法

   示例


适用于:画布应用模型驱动应用 Power Pages


对表记录进行分组和取消分组。

Description


GroupBy 函数返回一个表,其中包含根据一个或多个列中的值归组的记录。 同组中的记录将置于单个记录中,同时添加一个列,用于保留一个嵌套的剩余列的表。


Ungroup 函数逆向执行 GroupBy 过程。 此函数返回一个表,该表将组在一起的记录拆分成单个记录。


可以使用 GroupBy 对记录分组,修改返回的表,然后在修改后的表中使用 Ungroup 对记录取消分组。 例如,可以通过以下方法删除一组记录:


   使用 GroupBy 函数。

   使用 Filter 函数来删除整组记录。

   使用 Ungroup 函数。


还可以根据分组来聚合结果:


   使用 GroupBy 函数。

   将 AddColumns 函数与 Sum、Average 以及其他聚合函数一起使用,以添加一个新列,该列是组表的聚合。

   使用 DropColumns 函数删除组表。


Ungroup 会尝试保留馈送至 GroupBy 的记录的初始顺序。 这并不总是可行(例如,当初始表包含空白记录时)。


表是 Power Apps 中的一个值,与字符串或数字类似。 可以指定一个表作为函数的自变量,然后函数可返回一个表。 GroupBy 和 Ungroup 并不修改表,而是将表视为自变量,然后返回另一个表。 请参阅使用表,了解更多详细信息。


备注


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

语法


GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )


   Table - 必需。 要分组的表。

   ColumnName(s) - 必需。 作为记录分组依据的表中的列名称。 这些列将变为生成的表中的列。

   GroupColumnName - 必需。 ColumnName 中不包含的记录数据存储的列名称。


Ungroup( Table, GroupColumnName )


   Table - 必需。 要取消分组的表。

   GroupColumnName - 必需。 包含使用 GroupBy 函数设置的记录数据的列。


示例

创建集合


   添加一个按钮,然后设置其 Text 属性,以使该按钮显示初始。

   将初始按钮的 OnSelect 属性设置为下面的公式:


Power Fx


ClearCollect( CityPopulations,

   { City: "London",    Country: "United Kingdom", Population: 8615000},

   { City: "Berlin",    Country: "Germany",        Population: 3562000},

   { City: "Madrid",    Country: "Spain",          Population: 3165000},

   { City: "Rome",      Country: "Italy",          Population: 2874000},

   { City: "Paris",     Country: "France",         Population: 2273000},

   { City: "Hamburg",   Country: "Germany",        Population: 1760000},

   { City: "Barcelona", Country: "Spain",          Population: 1602000},

   { City: "Munich",    Country: "Germany",        Population: 1494000},

   { City: "Milan",     Country: "Italy",          Population: 1344000}

)


   按住 Alt 键的同时,选择原始按钮。


   刚创建了名为 CityPopulations 的集合,该集合包含此数据:


   CityPopulations 示例。


   若要显示此集合,请选择文件菜单中的集合,然后选择 CityPopulations 集合。 此时显示集合中的前五个记录:


   CityPopulations 集合。


分组记录


   添加另一个按钮,然后将其 Text 属性设置为 Group。


   将此按钮的 OnSelect 属性设为下面的公式:


   ClearCollect( CitiesByCountry, GroupBy( CityPopulations, Country, Cities ) )


   按住 Alt 键的同时,选择分组按钮。


   刚创建了一个名为 CitiesByCountry 的集合,其中上一个集合的记录按国家/地区列进了分组。


   分组的城市。


   若要显示此集合中的前五条记录,请在文件菜单中选择集合。


   按国家/地区排列的城市。


   若要显示某个国家/地区内城市的人口,请选择该国家/地区(如德国)的城市列中的表图标:


   人口 - 德国。


对记录进行筛选和取消分组


   添加另一个按钮,然后设置其 Text 属性,以使该按钮显示筛选。


   将此按钮的 OnSelect 属性设为下面的公式:


   ClearCollect( CitiesByCountryFiltered, Filter( CitiesByCountry, "e" in Country ) )


   按住 Alt 键的同时,选择已添加的按钮。


   刚创建了第三个集合,名为 CitiesByCountryFiltered,其中仅含名称带“e”的国家/地区(即没有西班牙和意大利)。


   CitiesByCountryFiltered。


   再添加一个按钮,然后设置其 Text 属性,以使该按钮显示取消分组。


   将此按钮的 OnSelect 属性设为下面的公式:


   ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )


   这将导致:


   取消分组后按国家/地区排列的城市。


聚合结果


我们可以在分组表上执行的另一个操作是编译结果。 在本示例中,将对每个国家/地区的主要城市的人口求和。


   添加另一个按钮,然后设置其 Text 属性,以便该按钮显示总和。


   将 Sum 按钮的 OnSelect 属性设置为下面的公式:


   ClearCollect( CityPopulationsSum, AddColumns( CitiesByCountry, 'Sum of City Populations', Sum( Cities, Population ) ) )


   这将导致:


   城市总数。


   AddColumns 以基本 CitiesByCountry 集合开始,并添加新的列城市人口总和。 此列的值将根据公式 Sum( Cities, Population ) 逐行进行计算。 AddColumns 为每行提供城市列的值,而 Sum 将此子表的每行的人口进行加总。


   现在,已得到所需的总和,可以使用 DropColumns 删除子表。


   添加另一个按钮,并设置它的 Text 属性,以让按钮显示 SumOnly。


   将 SumOnly 按钮的 OnSelect 属性设置为以下公式:


   ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )


   这将导致:


   国家/地区总数。


   请注意,无需对此表执行取消分组。