Udostępnij za pośrednictwem


Funkcje GroupBy i Ungroup

Dotyczy: Aplikacje kanwy Aplikacje oparte na modelu Power Pages

Grupowanie i rozgrupowywanie rekordów tabeli.

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.

Polecenie Rozgrupuj próbuje zachować oryginalną kolejność rekordów, które zostały przekazane 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ą tabelę jako argument i zwracają inną tabelę. Aby uzyskać więcej szczegółów, zobacz artykuł dotyczący pracy z tabelami.

Uwaga

W Power Apps przed wersją 3.24042 nazwy kolumn były określane za pomocą ciągu tekstowego z podwójnymi cudzysłowami, a jeśli były połączone ze źródłem danych, musiały być również nazwami logicznymi. Na przykład nazwa logiczna "cr43e_name" z podwójnymi cudzysłowami została użyta zamiast nazwy wyświetlanej Nazwa bez cudzysłowów. W przypadku źródeł danych SharePoint i Excel, które zawierają nazwy kolumn ze spacjami, każda spacja została określona za pomocą "_x0020_", na przykład "Column Name" jako "Column_x0020_Name". Po tej wersji wszystkie aplikacje zostały automatycznie zaktualizowane do nowej składni opisanej w tym artykule.

Składnia

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

  • Tabela - Wymagane. Tabela, która ma zostać pogrupowana.
  • ColumnNames — wymagane. Nazwy kolumn w Tabeli, według których grupowane będą rekordy. Te kolumny stają się kolumnami w tabeli wynikowej.
  • GroupColumnName — wymagane. Nazwa kolumny do przechowywania danych rekordu poza kolumnami NazwaKolumny.

Rozgrupuj( tabela,nazwa _kolumny_ grupy)

  • Tabela - Wymagane. Tabela, która ma zostać rozgrupowana.
  • GroupColumnName — wymagane. Kolumna, która zawiera dane rekordów przygotowane przez funkcję GroupBy.

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( MiastaWedługKraju, Grupuj Według( PopulacjeMiast, Kraj, Miasta ) )

  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" w 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, Miasta ) )

    Wynik będzie następujący:

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

Agregowanie wyników

Inną operacją, która można wykonać w pogrupowana tabeli, jest kompilacja 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, 'Suma populacji miast', Sum( Miasta, Populacja ) ) )

    Wynik będzie następujący:

    Miasta łącznie.

    AddColumns rozpoczyna się od podstawowej kolekcji CitiesByCountry i dodaje nową kolumnę Sum of City Populations. Wartości tej kolumny są obliczane wiersz po wierszu na podstawie formuły Sum( Cities, Population ). AddColumns podaje wartość kolumny Cities (tabeli) dla każdego wiersza, a Suma sumuje populację dla 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, Miasta ) )

    Wynik będzie następujący:

    Kraje łącznie.

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