Funkcje Sort i SortByColumns w usłudze PowerAppsSort and SortByColumns functions in PowerApps

Sortuje tabelę.Sorts a table.

OpisDescription

Funkcja Sort sortuje tabelę na podstawie formuły.The Sort function sorts a table based on a formula.

Formuła jest szacowana dla każdego rekordu tabeli, a wyniki są używane do sortowania tabeli.The formula is evaluated for each record of the table, and the results are used to sort the table. Wynikiem formuły musi być liczba, ciąg znaków lub wartość logiczna. Wynikiem nie może być tabela ani rekord.The formula must result in a number, a string, or a Boolean value; it can't result in a table or a record.

Fields of the record currently being processed are available within the formula. You simply reference them by name as you would any other value. You can also reference control properties and other values from throughout your app. For more details, see the examples below and working with record scope.

Aby sortować najpierw według jednej kolumny, a następnie według innej, należy osadzić jedną formułę funkcji Sort w drugiej.To sort first by one column and then by another, you embed a Sort formula within another. 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 )For example, you can use this formula to sort a Contacts table first by a LastName column and then by a FirstName column: 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.The SortByColumns function can also be used to sort a table based on one or more columns.

Lista parametrów dla funkcji SortByColumns zawiera nazwy kolumn, według których ma być wykonane sortowanie, i kierunek sortowania dla danej kolumny.The parameter list for SortByColumns provides the names of the columns to sort by and the sort direction per column. Sortowanie jest wykonywane zgodnie z kolejnością parametrów (najpierw sortowanie według pierwszej kolumny, a następnie drugiej i tak dalej).Sorting is performed in the order of the parameters (sorted first by the first column, then the second, and so on). Nazwy kolumn są podawane jako ciągi i jeśli są bezpośrednio podawane na liście parametrów, wymagają cudzysłowów.Column names are specified as strings, requiring double quotes if directly included in the parameter list. Na przykład SortByColumns( CustomerTable, "LastName" ).For example, SortByColumns( CustomerTable, "LastName" ).

Można połączyć funkcję SortByColumns z kontrolką listy rozwijanej lub pola listy, aby umożliwić użytkownikom wybór kolumny, według której ma być wykonywane sortowanie.You can combine SortByColumns with a Drop down or List box control to enable users to select which column to sort by.

Oprócz sortowania rosnąco lub malejąco funkcja SortByColumns może sortować na podstawie jednokolumnowej tabeli wartości.In addition to sorting ascending or descending, SortByColumns can sort based on a single column table of values. 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.For example, you can sort record based on the name of a day of the week by supplying [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ] as the sort order. 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.All records which have Monday" will come first, followed by Tuesday, and so on. Rekordy, które nie występują w tabeli definiującej sortowanie, są umieszczane na końcu listy.Records found that do not appear in the sort table are put at the end of the list.

Tabele są w usłudze PowerApps wartościami, podobnie jak ciąg lub liczba.Tables are a value in PowerApps, just like a string or number. Mogą być przekazywane do funkcji i zwracane przez funkcje.They can be passed to and returned from functions. Funkcje Sort i SortByColumn nie modyfikują tabeli. Zamiast tego przyjmują one tabelę jako argument i zwracają nową tabelę, która została posortowana.Sort and SortByColumn don't modify a table; instead they take a table as an argument and return a new table that has been sorted. Aby uzyskać więcej szczegółów, zobacz artykuł dotyczący pracy z tabelami.See working with tables for more details.

Delegation

When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. For example, when you start an app that shows a Gallery control filled with data, only the first set of records will be initially brought to the device. As the user scrolls, additional data is brought down from the data source. The result is a faster start time for the app and access to very large data sets.

However, delegation may not always be possible. Data sources vary on what functions and operators they support with delegation. If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. When possible, consider changing the formula to avoid functions and operators that can't be delegated. The delegation list details which data sources and operations can be delegated.

If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. Filter and sort functions will operate on a reduced set of records. What is available in the Gallery may not be the complete story, which could be confusing to users.

See the delegation overview for more information.

SkładniaSyntax

Sort( Tabela, Formuła [, KolejnośćSortowania ] )Sort( Table, Formula [, SortOrder ] )

  • Tabela — wymagane.Table - Required. Tabela do posortowania.Table to sort.
  • Formuła — wymagane.Formula - Required. Ta formuła jest szacowana dla każdego rekordu tabeli, a wyniki są używane do sortowania tabeli.This formula is evaluated for each record of the table, and the results are used to sort the table. Można odwoływać się do kolumn w tabeli.You can reference columns within the table.
  • KolejnośćSortowania — opcjonalne.SortOrder - Optional. Jako wartość podaj SortOrder.Descending, aby sortować tabelę w kolejności malejącej.Specify SortOrder.Descending to sort the table in descending order. Wartość domyślna to SortOrder.Ascending.SortOrder.Ascending is the default value.

SortByColumns( Tabela, NazwaKolumny1 [, KolejnośćSortowania1, NazwaKolumny2, KolejnośćSortowania2, ... ] )SortByColumns( Table, ColumnName1 [, SortOrder1, ColumnName2, SortOrder2, ... ] )

  • Tabela — wymagane.Table - Required. Tabela do posortowania.Table to sort.
  • NazwaKolumn(y) — wymagane.ColumnName(s) - Required. Nazwy kolumn, według których ma być wykonywane sortowanie, podane jako ciągi.The column names to sort on, as strings.
  • KolejnośćSortowania — opcjonalne.SortOrder(s) - Optional. Możliwe wartości to SortOrder.Ascending lub SortOrder.Descending.SortOrder.Ascending or SortOrder.Descending. Wartość domyślna to SortOrder.Ascending.SortOrder.Ascending is the default. Jeśli podano wiele NazwKolumn, dla wszystkich kolumn z wyjątkiem ostatniej musi zostać podana KolejnośćSortowania.If multiple ColumnNames are supplied, all but the last column must include a 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_”.Note: 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".

SortByColumns( Tabela, NazwaKolumny, TabelaKolejnościSortowania )SortByColumns( Table, ColumnName, SortOrderTable )

  • Tabela — wymagane.Table - Required. Tabela do posortowania.Table to sort.
  • NazwaKolumny — wymagane.ColumnName - Required. Nazwa kolumny, według której ma być wykonane sortowanie, podana jako ciąg.The column name to sort on, as strings.
  • TabelaKolejnościSortowania — wymagane.SortOrderTable - Required. Jednokolumnowa tabela wartości, według której ma być wykonywane sortowanie.Single column table of values to sort by.

    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_”.Note: 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

W poniższych przykładach użyto źródła danych IceCream, które zawiera dane z tej tabeli:For the following examples, we'll use the IceCream data source, which contains the data in this table:

FormułaFormula OpisDescription WynikResult
Sort( IceCream, Flavor )Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )SortByColumns( IceCream, "Flavor" )
Sortuje tabelę IceCream według kolumny Flavor.Sorts IceCream by its Flavor column. Kolumna Flavor zawiera ciągi, więc tabela jest sortowana alfabetycznie.The Flavor column contains strings, so the table is sorted alphabetically. Domyślnie kolejność sortowania jest rosnąca.By default, the sort order is ascending.
Sort( IceCream, Quantity )Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )SortByColumns( IceCream, "Quantity" )
Sortuje tabelę IceCream według kolumny Quantity.Sorts IceCream by its Quantity column. Kolumna Quantity zawiera liczby, więc tabela jest sortowana numerycznie.The Quantity column contains numbers, so the table is sorted numerically. Domyślnie kolejność sortowania jest rosnąca.By default, the sort order is ascending.
Sort( IceCream, Quantity, SortOrder.Descending )Sort( IceCream, Quantity, SortOrder.Descending )

SortByColumns( IceCream, "Quantity", SortOrder.Descending )SortByColumns( IceCream, "Quantity", SortOrder.Descending )
Sortuje tabelę IceCream według kolumny Quantity.Sorts IceCream by its Quantity column. Kolumna Quantity zawiera liczby, więc sortowanie jest wykonywane numerycznie.The Quantity column contains numbers, so the sort is done numerically. Kolejność sortowania została określona jako malejąca.The sort order has been specified as descending.
Sort( IceCream, Quantity + OnOrder )Sort( IceCream, Quantity + OnOrder ) Sortuje tabelę IceCream według sumy kolumn Quantity i OnOrder dla każdego rekordu indywidualnie.Sorts IceCream by the sum of its Quantity and OnOrder columns for each record individually. Suma jest liczbą, więc tabela jest sortowana numerycznie.The sum is a number, so the table is sorted numerically. Domyślnie kolejność sortowania jest rosnąca.By default, the sort order is ascending. Ponieważ sortujemy według formuły, a nie według nieprzetworzonych wartości kolumn, nie ma odpowiednika przy użyciu funkcji SortByColumns.Since we are sorting by a formula and not by raw column values, there is no equivalent using SortByColumns.
Sort( Sort( IceCream, OnOrder ), Quantity )Sort( Sort( IceCream, OnOrder ), Quantity )

SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )SortByColumns( IceCream, "OnOrder", Ascending, "Quantity", Ascending )
Sortuje tabelę IceCream najpierw według kolumny OnOrder, a następnie według kolumny Quantity.Sorts IceCream first by its OnOrder column, and then by its Quantity column. Należy zauważyć, że wartość "Pistachio" została umieszczona nad wartością "Vanilla" w pierwszym sortowaniu na podstawie kolumny OnOrder, a następnie zostały one razem przeniesione na właściwe miejsce na podstawie kolumny Quantity.Note that "Pistachio" rose above "Vanilla" in the first sort based on OnOrder, and then together they moved to their appropriate place based on Quantity.
SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] )SortByColumns( IceCream, "Flavor", [ "Pistachio", "Strawberry" ] ) Sortuje tabelę IceCream według kolumny Flavor na podstawie jednokolumnowej tabeli zawierającej wartości "Pistachio" i "Strawberry".Sorts IceCream by it's Flavor column based on the single column table containing "Pistachio" and "Strawberry". Rekordy, w których w kolumnie Flavor występuje wartość "Pistachio" będą w wyniku umieszczone jako pierwsze, a po nich rekordy z wartością "Strawberry".Records which have a Flavor of "Pistachio" will appear first in the result, followed by records that contain "Strawberry". Dla wartości w kolumnie Flavor, które nie zostały dopasowane, takich jak "Vanilla", rekordy zostaną wyświetlone po elementach, które zostały dopasowane.For values in the Flavor column that are not matched, such as "Vanilla", they will appear after the items that were matched.

Krok po krokuStep by step

Aby uruchomić te przykłady samodzielnie, należy utworzyć źródło danych IceCream jako kolekcję:To run these examples yourself, create the IceCream data source as a collection:

  1. Dodaj przycisk i ustaw dla jego właściwości OnSelect następującą formułę:Add a button, and set its OnSelect property to this formula:
    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 } )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.Preview the app, select the button, and then press Esc to return to the default workspace.
  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.Select Collections on the File menu to display the collection that you just created, and then press Esc to return to the default workspace.

Funkcja SortSort

  1. Dodaj kolejny przycisk i ustaw dla jego właściwości OnSelect następującą formułę:Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) ) ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    Poprzednia formuła tworzy drugą kolekcję o nazwie SortByFlavor, która zawiera te same dane co Ice Cream.The previous formula creates a second collection, named SortByFlavor, that contains the same data as Ice Cream. Jednak nowa kolekcja zawiera dane posortowane alfabetycznie według kolumny Flavor w kolejności rosnącej.However, the new collection contains the data sorted alphabetically by the Flavor column in ascending order.

  2. Naciśnij klawisz F5, wybierz nowy przycisk, a następnie naciśnij klawisz Esc.Press F5, select the new button, and then press 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.Select Collections on the File menu to display both collections, and then press Esc to return to the default workspace.
  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.Repeat the last three steps, but change the name of the collection that you want to create, and replace the Sort formula with a different formula from the table of examples earlier in this section that uses Sort.

Funkcja SortByColumnsSortByColumns

  1. Dodaj kolejny przycisk i ustaw dla jego właściwości OnSelect następującą formułę:Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) ) ClearCollect( SortByQuantity, SortByColumns( IceCream, "Quantity", Ascending, "Flavor", Descending ) )

    Poprzednia formuła tworzy trzecią kolekcję o nazwie SortByQuantity, która zawiera te same dane co Ice Cream.The previous formula creates a third collection, named SortByQuantity, that contains the same data as Ice Cream. Jednak nowa kolekcja zawiera dane posortowane numerycznie według kolumny Quantity w kolejności rosnącej, a następnie według kolumny Flavor w kolejności malejącej.However, the new collection contains the data sorted numerically by the Quanity column in ascending order, and then by the Flavor column in descending order.

  2. Naciśnij klawisz F5, wybierz nowy przycisk, a następnie naciśnij klawisz Esc.Press F5, select the new button, and then press 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.Select Collections on the File menu to display all three collections, and then press Esc to return to the default workspace.
  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.Repeat the last three steps, but change the name of the collection that you want to create, and replace the SortByColumns formula with a different formula from the table of examples earlier in this section that uses SortByColumns.