群組及取消群組資料表記錄

說明

GroupBy 函式會傳回資料表,當中包含根據一個或多個資料行中的值群組在一起的記錄。 相同群組中的記錄會放入單一記錄,並新增含有其餘資料行之巢狀資料表的資料行。

Ungroup 函式會反轉 GroupBy 程序。 此函式會傳回資料表,將任何群組在一起的記錄分成個別的記錄。

您可以使用 GroupBy 來群組記錄、修改它所傳回之資料表,然後使用 Ungroup 取消群組已修改資料表中的記錄。 例如,您可以依照這種方法移除一組記錄︰

  • 使用 GroupBy 函式。
  • 使用 Filter 函式以移除整個記錄的群組。
  • 使用 Ungroup 函式。

您也可以根據群組彙總結果︰

  • 使用 GroupBy 函式。
  • 搭配使用 AddColumns 函式與 SumAverage和其他彙總函式來新增新的資料行,也就是群組資料表的彙總。
  • 使用 DropColumns 函式來卸除資料表群組。

Ungroup 會嘗試保留已傳送至 GroupBy之記錄的原始順序。 並非永遠可能 (例如,如果原始資料表包含空白記錄)。

資料表是 PowerApps 中的值,如同字串或數字。 您可以將資料表指定為函式的引數,而函式可傳回資料表。 GroupByUngroup 不會修改資料表,而是將資料表作為引數,並傳回不同的資料表。 請參閱使用資料表以取得詳細資料。

語法

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

  • Table - 必要項目。 要群組的資料表。
  • ColumnName(s) - 必要項目。 用來群組記錄之資料表中的資料行名稱。 這些資料行在結果資料表中會成為資料行。
  • GroupColumnName - 必要項目。 不在 ColumnName(s) 的記錄資料儲存體的資料行名稱。

    注意:對於包含具有空格之資料行名稱的 SharePoint 和 Excel 資料來源,將每個空格指定為 "_x0020_"。 例如,將 "Column Name" 指定為 "Column_x0020_Name"

Ungroup( Table, GroupColumnName )

  • Table - 必要項目。 要取消群組的資料表。
  • GroupColumnName - 必要項目。 包含使用 GroupBy 函式設定的記錄資料之資料行。

    注意:對於包含具有空格之資料行名稱的 SharePoint 和 Excel 資料來源,將每個空格指定為 "_x0020_"。 例如,將 "Column Name" 指定為 "Column_x0020_Name"

範例

建立集合

  1. 新增按鈕,並設定其 Text 屬性,讓按鈕顯示原始

  2. 將 [原始] 按鈕的 OnSelect 屬性設為以下公式:

    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})

  3. 按下 F5 鍵,並選取 [原始] 按鈕,然後按下 Esc 鍵。

    您剛剛建立了集合,命名為 CityPopulations,其中包含此資料︰

  4. 若要顯示此集合,請選取 [檔案] 功能表上的 [集合],然後選取 CityPopulations 集合。 隨即顯示集合中的前五筆記錄︰

群組記錄

  1. 新增另一個按鈕,並將其 Text 屬性設為群組

  2. 將此按鈕的 OnSelect 屬性設為下列公式:

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

  3. 按下 F5 鍵,並選取 [群組] 按鈕,然後按下 Esc 鍵。

    您剛剛建立了集合,命名為 CitiesByCountry,其中前一個集合的記錄會由 [國家/地區] 資料行群組。

  4. 若要顯示此集合中的前五筆記錄,請選取 [檔案] 功能表上的 [集合]。

  5. 若要顯示國家/地區的城市人口,在城市資料行中選取該國家/地區 (例如,德國) 的 [資料表] 圖示:

篩選和取消群組記錄

  1. 新增另一個按鈕,並設定其 Text 屬性,讓按鈕顯示篩選

  2. 將此按鈕的 OnSelect 屬性設為下列公式:

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

  3. 按下 F5 鍵,選取您新增的按鈕,然後按下 Esc 鍵。

    您剛剛建立了第三個集合,命名為 CitiesByCountryFiltered,只包含名稱中具有 "e" 的國家/地區 (也就不是西班牙或義大利)。

  4. 再新增一個按鈕,並設定其 Text 屬性,讓按鈕顯示取消群組

  5. 將此按鈕的 OnSelect 屬性設為下列公式:

    ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, "Cities" ) )

    這可能會導致︰

彙總結果

我們可以使用群組的資料表進行的其他作業是彙總結果。 在此範例中,我們會加總每個國家/地區中主要城市的人口。

  1. 新增另一個按鈕,並設定其 Text 屬性,讓按鈕顯示總和

  2. 總和按鈕的 OnSelect 屬性設為下列公式:

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

    這可能會導致︰

    AddColumns 會以基底 CitiesByCountry 集合開始,並新增新的資料行城市人口總和。 此資料行的值是根據公式 Sum( Cities, Population ) 逐列計算。 AddColumns 會提供每一列城市資料行 (資料表) 的值,而總和會合計這個子資料表每一個資料列的人口

  3. 既然我們擁有我們想要的總和,我們可以使用 DropColumns 來移除子資料表。 將 OnSelect 屬性修改為使用以下公式︰

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, "Cities" ) )

    這可能會導致︰

    請注意,我們不需要取消群組此資料表。