Функции Sort и SortByColumns в PowerAppsSort and SortByColumns functions in PowerApps

Сортировка таблицы.Sorts a table.

ОписаниеDescription

Функция Sort сортирует таблицу по заданной формуле.The Sort function sorts a table based on a formula.

Формула вычисляется для каждой записи этой таблицы, и полученные результаты используются для сортировки таблицы.The formula is evaluated for each record of the table, and the results are used to sort the table. Формула должна возвращать число, строку или логическое значение, но не таблицу и не запись.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.

Чтобы сортировать таблицу сначала по одному столбцу, а затем по другому, используйте вложенные формулы Sort.To sort first by one column and then by another, you embed a Sort formula within another. Например, следующая формула отсортирует таблицу Contacts сначала по столбцу LastName, а затем по столбцу 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 )

Функцию SortByColumns также можно использовать для сортировки таблицы по одному или нескольким столбцам.The SortByColumns function can also be used to sort a table based on one or more columns.

В списке параметров функции SortByColumns передаются имена столбцов для сортировки и порядок сортировки по каждому из них.The parameter list for SortByColumns provides the names of the columns to sort by and the sort direction per column. Сортировка выполняется в порядке указания параметров (сначала по первому столбцу, затем по второму и т. д).Sorting is performed in the order of the parameters (sorted first by the first column, then the second, and so on). Имена столбцов, определяемые в строковом формате, должны быть заключены в двойные кавычки, будучи напрямую внесенными в список параметров.Column names are specified as strings, requiring double quotes if directly included in the parameter list. Например: SortByColumns (CustomerTable, "LastName").For example, SortByColumns( CustomerTable, "LastName" ).

Вы можете объединить функцию SortByColumns с раскрывающимся списком или списком, чтобы пользователи могли сами выбрать столбцы для сортировки.You can combine SortByColumns with a Drop down or List box control to enable users to select which column to sort by.

Кроме сортировки по возрастанию или убыванию, функция SortByColumns позволяет сортировать по списку значений, внесенному в таблицу с одним столбцом.In addition to sorting ascending or descending, SortByColumns can sort based on a single column table of values. Например, можно отсортировать записи по названиям дня недели, указав порядок сортировки [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ].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. Тогда первыми будут расположены все записи за понедельник, за ними все записи за вторник, и т. д.All records which have Monday" will come first, followed by Tuesday, and so on. Все записи, значения столбца в которых не будут найдены в таблице сортировки, помещаются в конец отсортированного списка.Records found that do not appear in the sort table are put at the end of the list.

Таблицы в PowerApps представлены значением, как любая строка или число.Tables are a value in PowerApps, just like a string or number. Их можно передавать в функции и получать в качестве результата выполнения функций.They can be passed to and returned from functions. Sort и SortByColumn не изменяют исходную таблицу, а принимают ее в качестве аргумента и возвращают новую отсортированную таблицу.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. Подробнее это описано здесь.See working with tables for more details.

ДелегированиеDelegation

PowerApps по возможности делегирует операции фильтрации сортировки источникам данных и позволяет просматривать результаты постранично.When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. Например, при запуске приложения, в котором есть элемент управления Gallery (Коллекция), заполненный данными, на устройство изначально будет загружен лишь первый набор записей.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.

Если выполнить делегирование не удается, PowerApps загружает для локальной обработки лишь небольшой набор записей.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.

СинтаксисSyntax

Sort( Table, Formula [, SortOrder ] )Sort( Table, Formula [, SortOrder ] )

  • Table — обязательный аргумент.Table - Required. Таблица для сортировки.Table to sort.
  • Formula — обязательный аргумент.Formula - Required. Эта формула вычисляется для каждой записи таблицы, и полученные результаты используются для сортировки таблицы.This formula is evaluated for each record of the table, and the results are used to sort the table. Можно ссылаться на любые столбцы в таблице.You can reference columns within the table.
  • SortOrder — необязательный аргумент.SortOrder - Optional. Если задать SortOrder.Descending, таблица будет отсортирована в порядке убывания.Specify SortOrder.Descending to sort the table in descending order. По умолчанию используется значение SortOrder.Ascending.SortOrder.Ascending is the default value.

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

  • Table — обязательный аргумент.Table - Required. Таблица для сортировки.Table to sort.
  • ColumnName — обязательный аргумент.ColumnName(s) - Required. Имена столбцов для сортировки в строковом формате.The column names to sort on, as strings.
  • SortOrder — необязательный аргумент.SortOrder(s) - Optional. Допускаются значения SortOrder.Ascending или SortOrder.Descending.SortOrder.Ascending or SortOrder.Descending. По умолчанию используется SortOrder.Ascending.SortOrder.Ascending is the default. Если передаются несколько значений ColumnName, то для всех столбцов, кроме последнего, необходимо указать SortOrder.If multiple ColumnNames are supplied, all but the last column must include a SortOrder.

    Примечание

    Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, вместо каждого пробела укажите "_x0020_".For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Например, Имя столбца укажите как Имя_x0020_столбца.For example, specify "Column Name" as "Column_x0020_Name".

SortByColumns( Table, ColumnName, SortOrderTable )SortByColumns( Table, ColumnName, SortOrderTable )

  • Table — обязательный аргумент.Table - Required. Таблица для сортировки.Table to sort.
  • ColumnName — обязательный аргумент.ColumnName - Required. Имя столбца для сортировки в строковом формате.The column name to sort on, as strings.
  • SortOrderTable — обязательный аргумент.SortOrderTable - Required. Таблица c одним столбцом, содержащая значения для сортировки.Single column table of values to sort by.

    Примечание

    Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, вместо каждого пробела укажите "_x0020_".For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Например, Имя столбца укажите как Имя_x0020_столбца.For example, specify "Column Name" as "Column_x0020_Name".

ПримерыExamples

В следующих примерах мы будем использовать источник данных IceCream, который содержит данные в виде такой таблицы:For the following examples, we'll use the IceCream data source, which contains the data in this table:

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
Sort( IceCream, Flavor )Sort( IceCream, Flavor )

SortByColumns( IceCream, "Flavor" )SortByColumns( IceCream, "Flavor" )
Сортирует IceCream по столбцу Flavor.Sorts IceCream by its Flavor column. Столбец Flavor содержит строковые данные, поэтому таблица сортируется в алфавитном порядке.The Flavor column contains strings, so the table is sorted alphabetically. По умолчанию используется порядок сортировки по возрастанию.By default, the sort order is ascending.
Sort( IceCream, Quantity )Sort( IceCream, Quantity )

SortByColumns( IceCream, "Quantity" )SortByColumns( IceCream, "Quantity" )
Сортирует IceCream по столбцу Quantity.Sorts IceCream by its Quantity column. Столбец Quantity содержит числовые данные, поэтому таблица сортируется по числовым значениям.The Quantity column contains numbers, so the table is sorted numerically. По умолчанию используется порядок сортировки по возрастанию.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 )
Сортирует IceCream по столбцу Quantity.Sorts IceCream by its Quantity column. Столбец Quantity содержит числовые данные, поэтому сортировка выполняется по числовым значениям.The Quantity column contains numbers, so the sort is done numerically. Указан порядок сортировки по убыванию.The sort order has been specified as descending.
Sort( IceCream, Quantity + OnOrder )Sort( IceCream, Quantity + OnOrder ) Сортирует IceCream по сумме столбцов Quantity и OnOrder, которая вычисляется отдельно для каждой записи.Sorts IceCream by the sum of its Quantity and OnOrder columns for each record individually. При суммировании мы получаем числовые данные, поэтому таблица сортируется по числовым значениям.The sum is a number, so the table is sorted numerically. По умолчанию используется порядок сортировки по возрастанию.By default, the sort order is ascending. Так как записи сортируются по формуле, а не по прямым значениям столбцов, для этого примера нет аналога с использованием функции 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 )
Сортирует IceCream сначала по столбцу OnOrder, а затем по столбцу Quantity.Sorts IceCream first by its OnOrder column, and then by its Quantity column. Обратите внимание, что строка "Pistachio" оказалась выше строки "Vanilla" при сортировке по столбцу OnOrder, а затем они заняли места рядом в соответствии со значениями в столбце 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" ] ) Сортирует IceCream по столбцу Flavor на основе таблицы с одним столбцом, содержащей значения "Pistachio" и "Strawberry".Sorts IceCream by it's Flavor column based on the single column table containing "Pistachio" and "Strawberry". Записи, в которых столбец Flavor имеет значения "Pistachio", будут отображаться в результате первыми, а за ними — записи со значением "Strawberry".Records which have a Flavor of "Pistachio" will appear first in the result, followed by records that contain "Strawberry". Все записи со значениями столбца Flavor, не входящими в этот список, например "Vanilla", будут отображаться после записей, для которых найдены совпадения.For values in the Flavor column that are not matched, such as "Vanilla", they will appear after the items that were matched.

Шаг за шагомStep by step

Чтобы самостоятельно выполнить эти примеры, создайте источник данных IceCream в виде коллекции следующим образом.To run these examples yourself, create the IceCream data source as a collection:

  1. Добавьте кнопку и задайте следующую формулу в качестве значения свойства OnSelect: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. Откройте предварительный просмотр приложения, нажмите эту кнопку, затем нажмите клавишу Esc, чтобы вернуться в рабочую область по умолчанию.Preview the app, select the button, and then press Esc to return to the default workspace.
  3. Выберите пункт Коллекции в меню Файл, чтобы отобразить только что созданную коллекцию, затем нажмите клавишу Esc, чтобы вернуться в рабочую область по умолчанию.Select Collections on the File menu to display the collection that you just created, and then press Esc to return to the default workspace.

СортироватьSort

  1. Добавьте еще одну кнопку и задайте следующую формулу в качестве значения свойства OnSelect:Add another button, and set its OnSelect property to this formula:
    ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )ClearCollect( SortByFlavor, Sort( IceCream, Flavor ) )

    Указанная выше формула создает вторую коллекцию с именем SortByFlavor, все данные в которой будут совпадать с данными из коллекции Ice Cream.The previous formula creates a second collection, named SortByFlavor, that contains the same data as Ice Cream. Но в этой новой коллекции данные отсортированы по возрастанию в алфавитном порядке по значениям столбца Flavor.However, the new collection contains the data sorted alphabetically by the Flavor column in ascending order.

  2. Нажмите клавишу F5, нажмите новую кнопку, затем нажмите клавишу ESC.Press F5, select the new button, and then press Esc.
  3. Выберите пункт Коллекции в меню Файл, чтобы отобразить обе коллекции, затем нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.Select Collections on the File menu to display both collections, and then press Esc to return to the default workspace.
  4. Повторите последние три шага, указывая новые имена для создаваемых коллекций и формулы для функции 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.

SortByColumnsSortByColumns

  1. Добавьте еще одну кнопку и задайте следующую формулу в качестве значения свойства OnSelect: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 ) )

    Указанная выше формула создает третью коллекцию с именем SortByQuantity, все данные в которой будут совпадать с данными из коллекции Ice Cream.The previous formula creates a third collection, named SortByQuantity, that contains the same data as Ice Cream. Но в этой новой коллекции данные будут отсортированы по числовым значениям столбца Quanity в порядке возрастания, а затем по значениям столбца Flavor в порядке убывания.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. Нажмите клавишу F5, нажмите новую кнопку, затем нажмите клавишу ESC.Press F5, select the new button, and then press Esc.
  3. Выберите пункт Коллекции в меню Файл, чтобы отобразить все три коллекции, затем нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.Select Collections on the File menu to display all three collections, and then press Esc to return to the default workspace.
  4. Повторите последние три шага, указывая новые имена для создаваемых коллекций и формулы для функции 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.