Функции Sort и SortByColumns

Применимо к: Приложениям Canvas Потокам рабочего стола Приложениям на основе моделей Power Pages Power Platform CLI

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

Заметка

Команды PAC CLI pac power-fx не поддерживают функцию SortByColumns .

Description

Функция Sort сортирует таблицу по заданной формуле.

Формула вычисляется для каждой записи этой таблицы, и полученные результаты используются для сортировки таблицы. Формула должна возвращать число, строку или логическое значение, но не таблицу и не запись.

Поля обрабатываемой в настоящее время записи доступны в формуле. Используйте оператор ThisRecord или просто укажите поля по имени, как указываются любые другие значения. Оператор As также можно использовать для присвоения имени обрабатываемой записи, что упростит понимание формулы и обеспечивает доступность вложенных записей. Дополнительные сведения см. в приведенных ниже примерах и в описании работы с областью записи.

Чтобы сортировать таблицу сначала по одному столбцу, а затем по другому, используйте вложенные формулы Sort. Например, следующая формула отсортирует таблицу Contacts сначала по столбцу LastName, а затем по столбцу FirstName: Sort( Sort( Contacts, LastName ), FirstName )

Функцию SortByColumns также можно использовать для сортировки таблицы по одному или нескольким столбцам.

В списке параметров функции SortByColumns передаются имена столбцов для сортировки и порядок сортировки по каждому из них. Сортировка выполняется в порядке указания параметров (сначала по первому столбцу, затем по второму и т. д). Имена столбцов, определяемые в строковом формате, должны быть заключены в двойные кавычки, будучи напрямую внесенными в список параметров. Например: SortByColumns( CustomerTable, "LastName" ).

Вы можете объединить функцию SortByColumns с элементом управления Drop down или List box, чтобы пользователи могли сами выбрать столбцы для сортировки.

Кроме сортировки по возрастанию или убыванию, функция SortByColumns позволяет сортировать по списку значений, внесенному в таблицу с одним столбцом. Например, можно отсортировать записи по названиям дня недели, указав порядок сортировки [ "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday" ]. Тогда первыми будут расположены все записи за понедельник (Monday), за ними все записи за вторник (Tuesday) и т. д. Все записи, значения столбца в которых не будут найдены в таблице сортировки, помещаются в конец отсортированного списка.

Таблицы являются значением в Power Apps, как и строка или число. Их можно передавать в функции и получать в качестве результата выполнения функций. Sort и SortByColumn не изменяют таблицу; вместо этого они принимают таблицу в качестве аргумента и возвращают новую отсортированную таблицу. Подробнее см. в описании работы с таблицами.

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

По возможности Power Apps будет делегировать операции фильтрации и сортировки источнику данных и пролистывать результаты по запросу. Например, при запуске приложения, которое отображает элемент управления Коллекция, заполненный данными, только первый набор записей будет изначально передан на устройство. По мере пролистывания будут отображаться дополнительные данные из источника данных. В результате уменьшается время запуска приложения или доступа к очень большим наборам данных.

Однако делегирование может не всегда быть возможно. Источники данных отличаются в зависимости от функций и операторов, которые они поддерживают с делегированием. Если полное делегирование формулы невозможно, среда разработки пометит предупреждением ту часть, которую невозможно делегировать. По возможности следует изменить формулу, чтобы избежать функций и операторов, которые невозможно делегировать. В списке делегирования приводятся сведения о том, какие источники данных и операции можно делегировать.

Если делегирование невозможно, Power Apps будет извлекать только небольшой набор записей для локальной работы. Функции фильтрования и сортировки будут работать с уменьшенным набором записей. Сведения, доступные в коллекции, могут не представлять полную картину, что может запутать пользователей.

Дополнительные сведения см. в обзоре делегирования.

Синтаксис

Сортировка( Таблица, Формула [, ПорядокСортировки ] )

  • Таблица - Обязательно. Таблица для сортировки.
  • Формула - Обязательно. Эта формула вычисляется для каждой записи этой таблицы, и полученные результаты используются для сортировки таблицы. Можно ссылаться на любые столбцы в таблице.
  • SortOrder - Необязательно. Если задать SortOrder.Descending, таблица будет отсортирована в порядке убывания. SortOrder.Ascending является значением по умолчанию.

СортироватьПоСтолбцам( Таблица, ИмяСтолбца1 [, ПорядокСортировки1, ИмяСтолбца2, ПорядокСортировки2, ... ] )

  • Таблица - Обязательно. Таблица для сортировки.

  • ColumnNames - Обязательно. Имена столбцов для сортировки в строковом формате.

  • SortOrders - Необязательно. SortOrder.Ascending или SortOrder.Descending. SortOrder.Ascending используется по умолчанию. Если передаются несколько значений ColumnName, то для всех столбцов, кроме последнего, необходимо указать SortOrder.

    Заметка

    Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, вместо каждого пробела укажите "_x0020_". Например, "Имя столбца" укажите как "Имя_x0020_столбца".

SortByColumns( Table, ColumnName, SortOrderTable< а48>)

  • Таблица - Обязательно. Таблица для сортировки.

  • ColumnName - Обязательно. Имя столбца для сортировки в строковом формате.

  • SortOrderTable - Обязательно. Таблица с одним столбцом, содержащая значения для сортировки.

    Заметка

    Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, вместо каждого пробела укажите "_x0020_". Например, "Имя столбца" укажите как "Имя_x0020_столбца".

Примеры

В следующих примерах мы будем использовать источник данных IceCream, который содержит данные в виде такой таблицы:

Пример мороженого.

Формула Описание Результат
Сорт (мороженое, вкус)

СортироватьПоСтолбцам(Мороженое, "Вкус")
Сортирует IceCream по столбцу Flavor. Столбец Flavor содержит строковые данные, поэтому таблица сортируется в алфавитном порядке. По умолчанию используется порядок сортировки по возрастанию. Отсортировано по алфавиту.
Сортировать(Мороженое, Количество)

СортироватьПоСтолбцам(Мороженое, "Количество")
Сортирует IceCream по столбцу Quantity. Столбец Quantity содержит числовые данные, поэтому таблица сортируется по числовым значениям. По умолчанию используется порядок сортировки по возрастанию. Отсортировано численно.
Сортировать(Мороженое, Количество, Порядок сортировки.По убыванию)

СортироватьПоСтолбцам(Мороженое, "Количество", ПорядокСортировки.ПоУбыванию)
Сортирует IceCream по столбцу Quantity. Столбец Quantity содержит числовые данные, поэтому сортировка выполняется по числовым значениям. Указан порядок сортировки по убыванию. Отсортировано численно и в нисходящем порядке.
Сортировать(Мороженое, Количество + OnOrder) Сортирует IceCream по сумме столбцов Quantity и OnOrder, которая вычисляется отдельно для каждой записи. При суммировании мы получаем числовые данные, поэтому таблица сортируется по числовым значениям. По умолчанию используется порядок сортировки по возрастанию. Так как записи сортируются по формуле, а не по прямым значениям столбцов, для этого примера нет аналога с использованием функции SortByColumns. Отсортировано численно и в восходящем порядке.
Сортировать(Сортировать(Мороженое, OnOrder), Количество)

СортироватьПоСтолбцам( IceCream, "OnOrder", SortOrder.Ascending, "Количество", SortOrder.Ascending )
Сортирует IceCream сначала по столбцу OnOrder, а затем по столбцу Quantity. Обратите внимание, что строка "Pistachio" оказалась выше строки "Vanilla" при сортировке по столбцу OnOrder, а затем они заняли места рядом в соответствии со значениями в столбце Quantity. Отсортировано с фисташками над ванилью.
SortByColumns( Мороженое, "Вкус", [ "Фисташка", "Клубника" ] ) Сортирует IceCream по столбцу Flavor на основе таблицы с одним столбцом, содержащей значения "Pistachio" и "Strawberry". Записи, в которых столбец Flavor имеет значения "Pistachio", будут отображаться в результате первыми, а за ними — записи со значением "Strawberry". Все записи со значениями столбца Flavor, не входящими в этот список, например "Vanilla", будут отображаться после записей, для которых найдены совпадения. Отсортировано с фисташками над клубникой.

Пошаговое руководство

Чтобы самостоятельно выполнить эти примеры, создайте источник данных IceCream в виде коллекции следующим образом.

  1. Добавьте кнопку и задайте следующую формулу в качестве значения свойства OnSelect:
    ClearCollect( IceCream, { Вкус: "Шоколад", Количество: 100, OnOrder: 150 }, { Вкус: "Ваниль", Количество: 200, OnOrder: 20 }, { Вкус: "Клубника", Количество: 300, OnOrder: 0 }, { Вкус: "Мятный шоколад", Количество: 60, OnOrder: 100 }, { Вкус: "Фисташка", Количество: 200, OnOrder: 10 } )
  2. Откройте предварительный просмотр приложения, нажмите эту кнопку, затем нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.
  3. Выберите пункт Коллекции в меню Файл, чтобы отобразить только что созданную коллекцию, затем нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.

Sort

  1. Добавьте еще одну кнопку и задайте следующую формулу в качестве значения свойства OnSelect:
    ОчиститьСобрать(СортироватьПоВкусу, Сортировать(Мороженое, Вкус) )

    Указанная выше формула создает вторую коллекцию с именем SortByFlavor, все данные в которой будут совпадать с данными из коллекции Ice Cream. Но в этой новой коллекции данные отсортированы по возрастанию в алфавитном порядке по значениям столбца Flavor.

  2. Нажмите клавишу F5, нажмите новую кнопку, затем нажмите клавишу ESC.

  3. Выберите пункт Коллекции в меню Файл, чтобы отобразить обе коллекции, затем нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.

  4. Повторите последние три шага, указывая новые имена для создаваемых коллекций, и замените формулу для функции Sort, используя другую формулу из таблицы примеров ранее в этом разделе, в которых используется функция Sort.

SortByColumns

  1. Добавьте еще одну кнопку и задайте следующую формулу в качестве значения свойства OnSelect:
    ClearCollect( Сортировать по количеству, Сортировать по столбцам( Мороженое, "Количество", Порядок сортировки.По возрастанию, "Вкус", Порядок сортировки.По убыванию ) )

    Указанная выше формула создает третью коллекцию с именем SortByQuantity, все данные в которой будут совпадать с данными из коллекции Ice Cream. Но в этой новой коллекции данные будут отсортированы по числовым значениям столбца Quantity в порядке возрастания, а затем по значениям столбца Flavor в порядке убывания.

  2. Нажмите клавишу F5, нажмите новую кнопку, затем нажмите клавишу ESC.

  3. Выберите пункт Коллекции в меню Файл, чтобы отобразить все три коллекции, затем нажмите клавишу ESC, чтобы вернуться в рабочую область по умолчанию.

  4. Повторите последние три шага, указывая новые имена для создаваемых коллекций, и замените формулы для функции SortByColumns, используя другую формулу из таблицы примеров ранее в этом разделе, в которых используется функция SortByColumns.