GroupBy 和 Ungroup 函式

適用於: 畫布應用程式 模型導向應用程式

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

Description

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

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

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

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

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

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

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

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

注意

在 Power Apps 版本 3.24042 之前,欄名稱是透過使用雙引號的文字字串指定的,如果連接到資料來源,它們也需要是邏輯名稱。 例如,使用雙引號的邏輯名稱 "cr43e_name",而不是不含引號的顯示名稱 Name。 對於包含帶有空格的欄名稱的 SharePoint 和 Excel 資料來源,每個空格均以「_x0020_」指定,例如「欄名稱」「Column_x0020_Name」。 在此版本之後,所有應用程式都會自動更新為本文中所述的新語法。

語法

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

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

Ungroup( Table, GroupColumnName )

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

範例

建立集合

  1. 新增按鈕,並設定其 Text 屬性,讓按鈕顯示 Original
  2. Original 按鈕的 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}
)
  1. 按住 Alt 鍵並選取 Original 按鈕。

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

    CityPopulations 範例。

  2. 若要顯示此集合,請選取 File 功能表上的 Collections,然後選取 CityPopulations 集合物件。 隨即顯示集合中的前五筆記錄︰

    CityPopulations 集合物件。

群組記錄

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

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

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

  3. 按住 Alt 鍵並選取 Group 按鈕。

    您剛剛建立了集合,命名為 CitiesByCountry,其中前一個集合的記錄會由 Country 欄位群組。

    城市分組。

  4. 若要顯示此集合中的前五筆記錄,請選取 File 功能表上的 Collections

    按國家/地區區分的城市。

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

    人口 - 德國。

篩選和取消群組記錄

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

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

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

  3. 按住 Alt 鍵時,選取您新增的按鈕。

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

    CitiesByCountryFiltered。

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

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

    ClearCollect( CityPopulationsUngrouped, Ungroup( CitiesByCountryFiltered, Cities ) )

    這可能會導致︰

    取消分組之後依國家/地區區分的城市。

彙總結果

我們可以對分組表執行的另一個動作是編譯結果。 在此範例中,我們會加總每個國家/地區中主要城市的人口。

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

  2. "Sum" 按鈕的 OnSelect 屬性設為下列公式:

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

    這可能會導致︰

    城市總和。

    AddColumns 會以基礎 CitiesByCountry 集合物件開始,並新增新欄位 Sum of City Populations。 此欄位的值是根據公式 Sum( Cities, Population ) 逐列計算。 AddColumns 會提供每一列 Cities 欄位 (資料表) 的值,而 Sum 會合計這個子資料表每一個資料列的 Population

    既然我們擁有我們想要的總和,我們可以使用 DropColumns 來移除子資料表。

  3. 新增另一個按鈕,並設定其 Text 屬性,讓按鈕顯示 SumOnly

  4. "SumOnly" 按鈕的 OnSelect 屬性設定為下列公式:

    ClearCollect( CityPopulationsSumOnly, DropColumns( CityPopulationsSum, Cities ) )

    這可能會導致︰

    國家/地區總和。

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