Funkcje GroupBy i Ungroup

Dotyczy: aplikacje kanwy aplikacje oparte na modelu

Grupowanie i rozgrupowywanie rekordówtabeli.

Popis

Funkcja GroupBy zwraca tabelę z rekordami pogrupowanymi na podstawie wartości w co najmniej jednej kolumnie. 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.

Funkcja Ungroup odwraca proces GroupBy. Ta funkcja zwraca tabelę, rozdzielając na osobne rekordy wszelkie rekordy, które były ze sobą zgrupowane.

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. Na przykład w celu usunięcia grupy rekordów można posłużyć się następującym podejściem:

  • Użyj funkcji GroupBy.
  • Użyj funkcji Filter, aby usunąć całą grupę rekordów.
  • Użyj funkcji Ungroup.

Wyniki można też zagregować na podstawie ich grupowania:

  • Użyj funkcji GroupBy.
  • Użyj funkcji AddColumns z funkcją Sum, Average i innymi funkcjami agregacji, aby dodać nową kolumnę, która będzie agregacją tabel grupy.
  • Użyj funkcji DropColumns, aby usunąć tabelę grupy.

Funkcja Ungroup próbuje zachować pierwotną kolejność rekordów wprowadzonych do funkcji GroupBy. Nie jest to zawsze możliwe (na przykład gdy pierwotna tabela zawiera puste rekordy).

Tabela to wartość w usłudze Power Apps, podobnie jak ciąg lub liczba. Tabela może zostać określona jako argument dla funkcji, a funkcja może zwrócić tabelę. Funkcje GroupBy i Ungroup nie modyfikują tabeli. Zamiast tego przyjmują one tabelę jako argument i zwracają inną tabelę. Aby uzyskać więcej szczegółów, zobacz artykuł dotyczący pracy z tabelami.

Składnia

GroupBy( Tabela, NazwaKolumny1 [, NazwaKolumny2, ... ], NazwaKolumnyGrupy )

  • Tabela – wymagane. Tabela, która ma zostać pogrupowana.

  • ColumnName(s) - wymagane. Nazwy kolumn w Tabeli, według których grupowane będą rekordy. Te kolumny stają się kolumnami w tabeli wynikowej.

  • NazwaKolumnyGrupy – wymagane. Nazwa kolumny do przechowywania danych rekordu poza kolumnami NazwaKolumny.

    Uwaga

    W przypadku źródeł danych SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, każdą spację należy określać jako "_x0020_".. Na przykład wartość "Nazwa kolumny" należy określić jako "Nazwa_x0020_kolumny".

Ungroup( Tabela, NazwaKolumnyGrupy )

  • Tabela – wymagane. Tabela, która ma zostać rozgrupowana.

  • NazwaKolumnyGrupy – wymagane. Kolumna, która zawiera dane rekordów przygotowane przez funkcję GroupBy.

    Uwaga

    W przypadku źródeł danych SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, każdą spację należy określać jako "_x0020_".. Na przykład wartość "Nazwa kolumny" należy określić jako "Nazwa_x0020_kolumny".

Przykłady

Tworzenie kolekcji

  1. Dodaj przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis Original.
  2. Ustaw właściwość OnSelect przycisku Original na poniższą formułę:
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. Trzymając wciśnięty klawisz Alt, wybierz przycisk Original.

    W ten sposób została utworzona kolekcja o nazwie CityPopulations, która zawiera następujące dane:

    Przykładowe CityPopulations.

  2. Aby wyświetlić tę kolekcję, wybierz opcję Kolekcje w menu Plik, a następnie wybierz kolekcję CityPopulations. Pojawi się pierwszych pięć rekordów tej kolekcji:

    Kolekcja CityPopulations.

Grupowanie rekordów

  1. Dodaj kolejny przycisk i ustaw dla jego właściwości Text wartość „Group”.

  2. Dla właściwości OnSelect tego przycisku ustaw następującą formułę:

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

  3. Trzymając wciśnięty klawisz Alt, wybierz przycisk Grupa.

    W ten sposób została utworzona kolekcja o nazwie CitiesByCountry, w której rekordy poprzedniej kolekcji są pogrupowane według kolumny Country.

    Zgrupowane miast.

  4. Aby wyświetlić pierwsze pięć rekordów tej kolekcji, wybierz opcję Kolekcje w menu Plik.

    Miejscowości według kraju/regionu.

  5. Aby wyświetlić populacje miejscowości wybranym kraju/regionie, wybierz ikonę tabeli w kolumnie Miejscowości dla odpowiedniego kraju/regionu (na przykład Niemcy):

    Populacja — Niemcy.

Filtrowanie i rozgrupowywanie rekordów

  1. Dodaj kolejny przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis „Filter”.

  2. Dla właściwości OnSelect tego przycisku ustaw następującą formułę:

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

  3. Trzymając wciśnięty klawisz Alt, wybierz dodany przycisk.

    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 Hiszpania ani Włochy).

    CitiesByCountryFiltered.

  4. Dodaj jeszcze jeden przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis „Ungroup”.

  5. Dla właściwości OnSelect tego przycisku ustaw następującą formułę:

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

    Wynik będzie następujący:

    Miejscowości według kraju/regionu po cofnięciu grupowania.

Agregowanie wyników

Kolejną operacją, jaką można wykonać względem pogrupowanej tabeli, jest agregowanie wyników. W tym przykładzie obliczymy sumę populacji głównych miast w poszczególnych krajach/regionach.

  1. Dodaj kolejny przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis „Sum”.

  2. Dla właściwości OnSelect przycisku „Sum” ustaw następującą formułę:

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

    Wynik będzie następujący:

    Miasta łącznie.

    Składnia funkcji AddColumns zaczyna się od bazowej kolekcji CitiesByCountry, a następnie ta funkcja dodaje nową kolumnę Sum of City Populations. Wartości tej kolumny są obliczane wiersz po wierszu na podstawie formuły 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.

    Teraz, gdy mamy wymaganą sumę, możemy użyć funkcji DropColumns w celu usunięcia tabel podrzędnych.

  3. Dodaj kolejny przycisk i ustaw jego właściwość Text w taki sposób, aby na przycisku pojawił się napis „SumOnly”.

  4. Dla właściwości OnSelect przycisku „SumOnly” ustaw następującą formułę:

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

    Wynik będzie następujący:

    Kraje łącznie.

    Zwróć uwagę na to, że nie musieliśmy rozgrupowywać tej tabeli.