Funkcja Sort i SortByColumns

Dotyczy: Aplikacje oparte na kanwie Przepływy pulpitu Aplikacje oparte na modelach Power Platform CLI

Sortuje tabelę.

Uwaga

Polecenia power-fx PAC CLI nie obsługują funkcji SortByColumns.

Popis

Funkcja Sort sortuje tabelę na podstawie formuły.

Formuła jest szacowana dla każdego rekordu tabeli, a wyniki są używane do sortowania tabeli. Wynikiem formuły musi być liczba, ciąg znaków lub wartość logiczna. Wynikiem nie może być tabela ani rekord.

Pola aktualnie przetwarzanego rekordu są dostępne w obrębie formuły. Użyj operatora ThisRecord lub po prostu odwołuj się do pól, używając ich nazw, tak jak w przypadku każdej innej wartości. Możesz też użyć operatora As w celu nadania nazwy przetwarzanemu rekordowi, co umożliwi utworzenie bardziej zrozumiałej formuły oraz dostęp do zagnieżdżonych rekordów. Aby uzyskać więcej informacji, zobacz poniższe przykłady oraz temat Praca z zakresem rekordów.

Aby sortować najpierw według jednej kolumny, a następnie według innej, należy osadzić jedną formułę funkcji Sort w drugiej. Na przykład możesz użyć tej formuły, aby posortować tabelę Contacts najpierw według kolumny LastName, a następnie według kolumny FirstName: Sort( Sort( Contacts, LastName ), FirstName )

Funkcja SortByColumns również może zostać użyta w celu posortowania tabeli na podstawie jednej lub więcej kolumn.

Lista parametrów dla funkcji SortByColumns zawiera nazwy kolumn, według których ma być wykonane sortowanie, i kierunek sortowania dla danej kolumny. Sortowanie jest wykonywane zgodnie z kolejnością parametrów (najpierw sortowanie według pierwszej kolumny, a następnie drugiej i tak dalej). Nazwy kolumn są podawane jako ciągi i jeśli są bezpośrednio podawane na liście parametrów, wymagają cudzysłowów. Na przykład SortByColumns( CustomerTable, "LastName" ).

Można połączyć funkcję SortByColumns z kontrolką Drop down lub List box, aby umożliwić użytkownikom wybór kolumny, według której ma być wykonywane sortowanie.

Oprócz sortowania rosnąco lub malejąco funkcja SortByColumns może sortować na podstawie jednokolumnowej tabeli wartości. Na przykład można posortować rekordy na podstawie nazwy dnia tygodnia, podając wartości ["Poniedziałek", "Wtorek", "Środa", "Czwartek", "Piątek", "Sobota", "Niedziela"] jako kolejność sortowania. Wszystkie rekordy, w których występuje wartość "Poniedziałek" będą umieszczone jako pierwsze, po nich rekordy z wartością "Wtorek" i tak dalej. Rekordy, które nie występują w tabeli definiującej sortowanie, są umieszczane na końcu listy.

Tabele to wartość w usłudze Power Apps, podobnie jak ciąg lub liczba. Mogą być przekazywane do funkcji i zwracane przez funkcje. Funkcje Sort i SortByColumn nie modyfikują tabeli. Zamiast tego przyjmują one tabelę jako argument i zwracają nową tabelę, która została posortowana. Aby uzyskać więcej szczegółów, zobacz artykuł dotyczący pracy z tabelami.

Delegowanie

Gdy będzie to możliwe, usługa Power Apps będzie delegować operacje filtrowania i sortowania do źródła danych oraz strony, za pośrednictwem której zażądano wyników. Na przykład, gdy uruchomisz aplikację wyświetlającą kontrolkę Galeria wypełnioną danymi, tylko pierwszy zestaw rekordów zostanie wstępnie dostarczony na urządzenie. Gdy użytkownik będzie przewijał, dodatkowe dane będą pobierane ze źródła danych. Wynikiem tego jest krótszy czas uruchamiania aplikacji oraz możliwość uzyskiwania dostępu do bardzo dużych zestawów danych.

Jednak delegowanie nie zawsze jest możliwe. Źródła danych różnią się pod względem funkcji i operatorów, które obsługują w przypadku delegowania. Jeśli nie będzie można zakończyć delegowania formuły, środowisko tworzenia oflaguje część, której nie można delegować, za pomocą ostrzeżenia. Gdy jest to możliwe, należy rozważyć zmianę formuły, tak aby nie zawierała funkcji i operatorów, których nie można delegować. Lista delegowania zawiera szczegółowe informacje na temat tego, które źródła danych i operacje można delegować.

Jeśli delegowanie nie jest możliwe, usługa Power Apps ściąga tylko niewielki zestaw rekordów, nad którym można pracować lokalnie. Funkcje filtrowania i sortowania będą wykonywane na ograniczonym zestawie rekordów. Dlatego też informacje dostępne w kontrolce Galeria mogą być niekompletne, co z kolei może być mylące dla użytkowników.

Zobacz Omówienie delegowania, aby uzyskać więcej informacji.

Składnia

Sort( Table, Formula [, SortOrder ] )

  • Tabela – wymagane. Tabela do posortowania.
  • Formula - wymagane. Ta formuła jest szacowana dla każdego rekordu tabeli, a wyniki są używane do sortowania tabeli. Można odwoływać się do kolumn w tabeli.
  • SortOrder - opcjonalne. Jako wartość podaj SortOrder.Descending, aby sortować tabelę w kolejności malejącej. Wartość domyślna to SortOrder.Ascending.

SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Tabela – wymagane. Tabela do posortowania.

  • ColumnName(s) - wymagane. Nazwy kolumn, według których ma być wykonywane sortowanie, podane jako ciągi.

  • SortOrder(s) - opcjonalne. Możliwe wartości to SortOrder.Ascending lub SortOrder.Descending. Wartość domyślna to SortOrder.Ascending. Jeśli podano wiele ColumnNames, dla wszystkich kolumn z wyjątkiem ostatniej musi zostać podana SortOrder.

    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".

SortByColumns( Table, ColumnName, SortOrderTable )

  • Tabela – wymagane. Tabela do posortowania.

  • ColumnName - wymagane. Nazwa kolumny, według której ma być wykonane sortowanie, podana jako ciąg.

  • SortOrderTable - wymagane. Jednokolumnowa tabela wartości, według której ma być wykonywane sortowanie.

    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

W poniższych przykładach użyto źródła danych IceCream, które zawiera dane z tej tabeli:

Przykład Icecream.

Formuła Opis Wynik
Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )
Sortuje tabelę IceCream według kolumny Flavor. Kolumna Flavor zawiera ciągi, więc tabela jest sortowana alfabetycznie. Domyślnie kolejność sortowania jest rosnąca. Posortowane alfabetycznie.
Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )
Sortuje tabelę IceCream według kolumny Ilość. Kolumna Ilość zawiera liczby, więc tabela jest sortowana numerycznie. Domyślnie kolejność sortowania jest rosnąca. Sortowane numerycznie.
Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Sortuje tabelę IceCream według kolumny Ilość. Kolumna Ilość zawiera liczby, więc sortowanie jest wykonywane numerycznie. Kolejność sortowania została określona jako malejąca. Sortowane numerycznie i malejąco.
Sort( IceCream, Quantity + OnOrder ) Sortuje tabelę IceCream według sumy kolumn Ilość i OnOrder dla każdego rekordu indywidualnie. Suma jest liczbą, więc tabela jest sortowana numerycznie. Domyślnie kolejność sortowania jest rosnąca. Ponieważ sortujemy według formuły, a nie według nieprzetworzonych wartości kolumn, nie ma odpowiednika przy użyciu funkcji SortByColumns. Sortowane numerycznie i rosnąco.
Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", SortOrder.Ascending, "Quantity", SortOrder.Ascending )
Sortuje tabelę IceCream najpierw według kolumny OnOrder, a następnie według kolumny Ilość. Należy zauważyć, że wartość „Pistacja” została umieszczona nad wartością „Wanilia” w pierwszym sortowaniu na podstawie kolumny OnOrder, a następnie zostały one razem przeniesione na właściwe miejsce na podstawie kolumny Ilość. Sortowane z pistacjami nad wanilią.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Sortuje tabelę IceCream według kolumny Smak na podstawie jednokolumnowej tabeli zawierającej wartości „Pistacja” i „Truskawka”. Rekordy, w których w kolumnie Smak występuje wartość „Pistacja” będą w wyniku umieszczone jako pierwsze, a po nich rekordy z wartością „Truskawka”. Dla wartości w kolumnie Smak, które nie zostały dopasowane, takich jak „Wanilia”, rekordy zostaną wyświetlone po elementach, które zostały dopasowane. Sortowane z pistacjami nad truskawką.

Krok po kroku

Aby uruchomić te przykłady samodzielnie, należy utworzyć źródło danych IceCream jako kolekcję:

  1. Dodaj przycisk i ustaw dla jego właściwości OnSelect następującą formułę:
    ClearCollect( IceCream, { Flavor: "Chocolate", Quantity: 100, OnOrder: 150 }, { Flavor: "Vanilla", Quantity: 200, OnOrder: 20 }, { Flavor: "Strawberry", Quantity: 300, OnOrder: 0 }, { Flavor: "Mint Chocolate", Quantity: 60, OnOrder: 100 }, { Flavor: "Pistachio", Quantity: 200, OnOrder: 10 } )
  2. Uruchom podgląd aplikacji, wybierz przycisk, a następnie naciśnij klawisz Esc, aby powrócić do domyślnego obszaru roboczego.
  3. Wybierz pozycję Kolekcje w menu Plik, aby wyświetlić kolekcję, która właśnie została utworzona, a następnie naciśnij klawisz Esc, aby powrócić do domyślnego obszaru roboczego.

Sort

  1. Dodaj kolejny przycisk i ustaw dla jego właściwości OnSelect następującą formułę:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    Poprzednia formuła tworzy drugą kolekcję o nazwie SortByFlavor, która zawiera te same dane co Lody. Jednak nowa kolekcja zawiera dane posortowane alfabetycznie według kolumny Smak w kolejności rosnącej.

  2. Naciśnij klawisz F5, wybierz nowy przycisk, a następnie naciśnij klawisz Esc.

  3. Wybierz pozycję Kolekcje w menu Plik, aby wyświetlić obie kolekcje, a następnie naciśnij klawisz Esc, aby powrócić do domyślnego obszaru roboczego.

  4. Powtórz ostatnie trzy kroki, ale zmień nazwę kolekcji, którą chcesz utworzyć, i zastąp formułę funkcji Sort inną formułą z tabeli przykładów umieszczonej wcześniej w tej sekcji, która używa funkcji Sort.

SortByColumns

  1. Dodaj kolejny przycisk i ustaw dla jego właściwości OnSelect następującą formułę:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", SortOrder.Ascending, "Flavor", SortOrder.Descending ) )

    Poprzednia formuła tworzy trzecią kolekcję o nazwie SortByQuantity, która zawiera te same dane co Lody. Jednak nowa kolekcja zawiera dane posortowane numerycznie według kolumny Ilość w kolejności rosnącej, a następnie według kolumny Smak w kolejności malejącej.

  2. Naciśnij klawisz F5, wybierz nowy przycisk, a następnie naciśnij klawisz Esc.

  3. Wybierz pozycję Kolekcje w menu Plik, aby wyświetlić wszystkie trzy kolekcje, a następnie naciśnij klawisz Esc, aby powrócić do domyślnego obszaru roboczego.

  4. Powtórz ostatnie trzy kroki, ale zmień nazwę kolekcji, którą chcesz utworzyć, i zastąp formułę funkcji SortByColumns inną formułą z tabeli przykładów umieszczonej wcześniej w tej sekcji, która używa funkcji SortByColumns.