Funkcje GroupBy i Ungroup w usłudze PowerAppsGroupBy and Ungroup functions in PowerApps

Grupowanie i rozgrupowywanie rekordów tabeli.Groups and ungroups records of a table.

OpisDescription

Funkcja GroupBy zwraca tabelę z rekordami pogrupowanymi na podstawie wartości w co najmniej jednej kolumnie.The GroupBy function returns a table with records grouped together based on the values in one or more columns. Rekordy należące do tej samej grupy są umieszczane w jednym rekordzie, a ponadto dodawana jest kolumna, która przechowuje zagnieżdżoną tabelę z pozostałych kolumn.Records in the same group are placed into a single record, with a column added that holds a nested table of the remaining columns.

Funkcja Ungroup odwraca proces GroupBy.The Ungroup function reverses the GroupBy process. Ta funkcja zwraca tabelę, rozdzielając na osobne rekordy wszelkie rekordy, które były ze sobą zgrupowane.This function returns a table, breaking into separate records any records that were grouped together.

Rekordy można pogrupować za pomocą funkcji GroupBy, zmodyfikować tabelę zwróconą przez tę funkcję, a następnie — za pomocą funkcji Ungroup — rozgrupować rekordy w zmodyfikowanej tabel.You can group records by using GroupBy, modify the table that it returns, and then ungroup records in the modified table by using Ungroup. Na przykład w celu usunięcia grupy rekordów można posłużyć się następującym podejściem:For example, you can remove a group of records by following this approach:

  • Użyj funkcji GroupBy.Use the GroupBy function.
  • Użyj funkcji Filter, aby usunąć całą grupę rekordów.Use the Filter function to remove the entire group of records.
  • Użyj funkcji Ungroup.Use the Ungroup function.

Wyniki można też zagregować na podstawie ich grupowania:You can also aggregate results based on a grouping:

  • Użyj funkcji GroupBy.Use the GroupBy function.
  • Użyj funkcji AddColumns z funkcją Sum, Average i innymi funkcjami agregacji, aby dodać nową kolumnę, która będzie agregacją tabel grupy.Use the AddColumns function with Sum, Average, and other aggregate functions to add a new column which is an aggregate of the group tables.
  • Użyj funkcji DropColumns, aby usunąć tabelę grupy.Use the DropColumns function to drop the group table.

Funkcja Ungroup próbuje zachować pierwotną kolejność rekordów wprowadzonych do funkcji GroupBy.Ungroup tries to preserve the original order of the records that were fed to GroupBy. Nie jest to zawsze możliwe (na przykład gdy pierwotna tabela zawiera puste rekordy).This isn't always possible (for example, if the original table contains blank records).

Tabela to wartość w usłudze PowerApps, podobnie jak ciąg lub liczba.A table is a value in PowerApps, just like a string or a number. Tabela może zostać określona jako argument dla funkcji, a funkcja może zwrócić tabelę.You can specify a table as an argument for a function, and a function can return a table. Funkcje GroupBy i Ungroup nie modyfikują tabeli. Zamiast tego przyjmują one tabelę jako argument i zwracają inną tabelę.GroupBy and Ungroup don't modify a table; instead they take a table as an argument and return a different table. Aby uzyskać więcej szczegółów, zobacz artykuł dotyczący pracy z tabelami.See working with tables for more details.

SkładniaSyntax

GroupBy( Tabela, NazwaKolumny1 [, NazwaKolumny2, ... ], NazwaKolumnyGrupy )GroupBy( Table, ColumnName1 [, ColumnName2, ... ], GroupColumnName )

  • Tabela — wymagane.Table - Required. Tabela, która ma zostać pogrupowana.Table to be grouped.
  • NazwaKolumn(y) — wymagane.ColumnName(s) - Required. Nazwy kolumn w Tabeli, według których grupowane będą rekordy.The column names in Table by which to group records. Te kolumny stają się kolumnami w tabeli wynikowej.These columns become columns in the resulting table.
  • NazwaKolumnyGrupy — wymagane.GroupColumnName - Required. Nazwa kolumny do przechowywania danych rekordu poza kolumnami NazwaKolumny.The column name for the storage of record data not in the ColumnName(s).

    Uwaga

    W przypadku źródeł danych programów SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, każdą spację należy określać jako „_x0020_”.For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Na przykład wartość „Nazwa kolumny” należy określić jako „Nazwa_x0020_kolumny”.For example, specify "Column Name" as "Column_x0020_Name".

Ungroup( Tabela, NazwaKolumnyGrupy )Ungroup( Table, GroupColumnName )

  • Tabela — wymagane.Table - Required. Tabela, która ma zostać rozgrupowana.Table to be ungrouped.
  • NazwaKolumnyGrupy — wymagane.GroupColumnName - Required. Kolumna, która zawiera dane rekordów przygotowane przez funkcję GroupBy.The column that contains the record data setup with the GroupBy function.

    Uwaga

    W przypadku źródeł danych programów SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, każdą spację należy określać jako „_x0020_”.For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Na przykład wartość „Nazwa kolumny” należy określić jako „Nazwa_x0020_kolumny”.For example, specify "Column Name" as "Column_x0020_Name".

PrzykładyExamples

Tworzenie kolekcjiCreate a collection

  1. Dodaj przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis Original.Add a button, and set its Text property so that the button shows Original.
  2. Ustaw właściwość OnSelect przycisku Original na poniższą formułę:Set the OnSelect property of the Original button to this formula:

    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})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. Naciśnij klawisz F5, wybierz przycisk Original, a następnie naciśnij klawisz Esc.Press F5, select the Original button, and then press Esc.

    W ten sposób została utworzona kolekcja o nazwie CityPopulations, która zawiera następujące dane:You just created a collection, named CityPopulations, that contains this data:

  4. Aby wyświetlić tę kolekcję, wybierz opcję Kolekcje w menu Plik, a następnie wybierz kolekcję CityPopulations.To display this collection, select Collections on the File menu and then select the CityPopulations collection. Pojawi się pierwszych pięć rekordów tej kolekcji:The first five records in the collection appear:

Grupowanie rekordówGroup records

  1. Dodaj kolejny przycisk i ustaw dla jego właściwości Text wartość „Group”.Add another button, and set its Text property to "Group".
  2. Dla właściwości OnSelect tego przycisku ustaw następującą formułę:Set the OnSelect property of this button to this formula:

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

  3. Naciśnij klawisz F5, wybierz przycisk Group, a następnie naciśnij klawisz Esc.Press F5, select the Group button, and then press Esc.

    W ten sposób została utworzona kolekcja o nazwie CitiesByCountry, w której rekordy poprzedniej kolekcji są pogrupowane według kolumny Country.You just created a collection, named CitiesByCountry, in which the records of the previous collection are grouped by the Country column.

  4. Aby wyświetlić pierwsze pięć rekordów tej kolekcji, wybierz opcję Kolekcje w menu Plik.To display the first five records in this collection, select Collections on the File menu.

  5. Aby wyświetlić populacje miast w wybranym kraju, wybierz ikonę tabeli w kolumnie Cities dla odpowiedniego kraju (na przykład Germany):To display the populations of cities in a country, select the table icon in the Cities column for that country (for example, Germany):

Filtrowanie i rozgrupowywanie rekordówFilter and ungroup records

  1. Dodaj kolejny przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis „Filter”.Add another button, and set its Text property so that the button shows "Filter".
  2. Dla właściwości OnSelect tego przycisku ustaw następującą formułę:Set the OnSelect property of this button to this formula:

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

  3. Naciśnij klawisz F5, wybierz właśnie dodany przycisk, a następnie naciśnij klawisz Esc.Press F5, select the button that you added, and then press Esc.

    W ten sposób została utworzona trzecia kolekcja o nazwie CitiesByCountryFiltered, która zawiera tylko kraje z literą „e” w nazwach (czyli nie zawiera krajów Spain ani Italy).You just created a third collection, named CitiesByCountryFiltered, that includes only those countries that have an "e" in their names (that is, not Spain or Italy).

  4. Dodaj jeszcze jeden przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis „Ungroup”.Add one more button, and set its Text property so that the button shows "Ungroup".
  5. Dla właściwości OnSelect tego przycisku ustaw następującą formułę:Set the OnSelect property of this button to this formula:

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

    Wynik będzie następujący:Which results in:

Agregowanie wynikówAggregate results

Kolejną operacją, jaką można wykonać względem pogrupowanej tabeli, jest agregowanie wyników.Something else we can do with a grouped table is to aggregate the results. W tym przykładzie obliczymy sumę populacji głównych miast w poszczególnych krajach.In this example, we will sum the population of the major cities in each country.

  1. Dodaj kolejny przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis „Sum”.Add another button, and set its Text property so that the button shows "Sum".
  2. Dla właściwości OnSelect przycisku „Sum” ustaw następującą formułę:Set the OnSelect property of the "Sum" button to this formula:

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

    Wynik będzie następujący:Which results in:

    Składnia funkcji AddColumns zaczyna się od bazowej kolekcji CitiesByCountry, a następnie ta funkcja dodaje nową kolumnę Sum of City Populations.AddColumns starts with the base CitiesByCountry collection and adds a new column Sum of City Populations. Wartości tej kolumny są obliczane wiersz po wierszu na podstawie formuły Sum( Cities, Population ).This column's values are calculated row-by-row, based on the formula Sum( Cities, Population ). Funkcja AddColumns udostępnia wartość kolumny Cities (którą jest tabela) dla poszczególnych wierszy, a funkcja Sum dodaje wartość Population z każdego wiersza tej tabeli podrzędnej.AddColumns provides the value of the Cities column (a table) for each row, and Sum adds up the Population for each row of this sub table.

  3. Teraz, gdy mamy wymaganą sumę, możemy użyć funkcji DropColumns w celu usunięcia tabel podrzędnych.Now that we have the sum that we want, we can use DropColumns to remove the sub tables. Zmodyfikuj właściwość OnSelect w taki sposób, aby używała poniższej formuły:Modify the OnSelect property to use this formula:

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

    Wynik będzie następujący:Which results in:

    Zwróć uwagę na to, że nie musieliśmy rozgrupowywać tej tabeli.Note that we did not need to ungroup this table.