Поділитися через


Функції Sort і SortByColumns

Застосовується до: програм Canvas Потоків робочого столу Програм, Power Platform керованих моделлю, CLI

Сортує таблицю.

Нотатка

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

Опис

Функція Sort сортує таблицю на основі формули.

Формула виконується для кожного запису таблиці, а результати використовуються для сортування таблиці. Результатом формули має стати число, рядок або логічне значення. Її результатом не може бути таблиця або запис.

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

Щоб відсортувати спочатку за одним стовпцем, а потім за іншим, потрібно вбудувати одну формулу Sort в іншу. Наприклад, можна використати цю формулу для сортування таблиці Контактні особи спочатку за стовпцем Прізвище, а потім за стовпцем Ім’я: Sort( Sort( Contacts, LastName ), FirstName )

Функцію SortByColumns також можна використовувати для сортування таблиці на основі одного або кількох стовпців.

Список параметрів для функції SortByColumns містить імена стовпців, за яким потрібно сортувати, а також напрямок сортування для кожного стовпця. Сортування виконується в порядку параметрів (спочатку сортується за першим стовпцем, потім за другим тощо). Імена стовпців вказуються як рядки, що потребують подвійних лапок, якщо вони безпосередньо включені до списку параметрів. Наприклад, SortByColumns( CustomerTable, "Прізвище" ).

Можна об’єднати функцію SortByColumns з елементом керування Drop down або List box, щоб дозволити користувачам вибирати стовпець, за яким потрібно сортувати.

Крім сортування за зростанням або за спаданням функція SortByColumns може сортувати на основі таблиці з одним стовпцем значень. Наприклад, можна відсортувати запис на основі назви дня тижня, ввівши ["Понеділок", "Вівторок", "Середа", "Четвер", "П'ятниця", "Субота", "Неділя"] як порядок сортування. Усі записи, що мають Понеділок, будуть відображатися першими, а потім Вівторок тощо. Знайдені записи, які не відображаються в таблиці сортування, буде розташовано в кінці списку.

Таблиці — це значення в Power Apps, подібне до рядка або числа. Їх можна передавати в функції та повертати від функцій. Функції Sort та SortByColumn не змінюють таблицю. Натомість вони приймають таблицю як аргумент і повертають нову відсортовану таблицю. Додаткові відомості див. в розділі Робота з таблицями.

Делегування

За можливості Power Apps делегуватимуть операції фільтрування й сортування джерелу даних і розбиватимуть результати на сторінки за запитом. Наприклад, якщо ви запустите програму, яка показує Галерею даних, на пристрій спочатку буде завантажено лише перший набір записів. Додаткова інформація завантажуватиметься з джерела даних, коли користувач прокручуватиме галерею. Це прискорює запуск програм і доступ до дуже великих наборів даних.

Утім, делегування не завжди можливе. Джерела даних відрізняються за наборами функцій і операторів, які вони підтримують під час делегування. Якщо повністю делегувати формулу неможливо, неделеговану частину буде виділено в редакторі з попередженням. Якщо можливо, спробуйте змінити формулу, відмовившись від функцій і операторів, які не можна делегувати. У списку делегування перелічено всі джерела даних і операції, які можна делегувати.

Якщо делегування неможливе, Power Apps завантажить лише невеликий набір записів для локальної обробки. Функції фільтрування й сортування працюватимуть з обмеженим набором записів. Тобто в Галереї може відображатися не вся історія, що може спантеличити користувачів.

Додаткову інформацію див. у статті Огляд делегування.

Синтаксис

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

  • Table – обов’язковий аргумент. Таблицю, яку потрібно відсортувати.
  • Formula – обов’язковий аргумент. Ця формула виконується для кожного запису таблиці, а результати використовуються для сортування таблиці. В таблиці можна посилатися на стовпці.
  • SortOrder — необов’язковий аргумент. Укажіть Порядок сортування.За спаданням, щоб відсортувати таблицю за спаданням. Значення за замовчуванням: SortOrder.Ascending.

SortByColumns( Таблиця, Ім’я стовпця1 [, Порядок сортування1, Ім’я стовпця2, Порядок сортування2, ... ] )

  • Table – обов’язковий аргумент. Таблицю, яку потрібно відсортувати.

  • ColumnName(s) — обов'язковий аргумент. Імена стовпців можна сортувати як рядки.

  • SortOrder(s) — необов’язковий аргумент. Порядок сортування.За зростанням або Порядок сортування.За спаданням. Значення за замовчуванням: SortOrder.Ascending. Якщо додаються кілька Імен стовпців, усі окрім останнього стовпця мають містити значення Порядок сортування.

    Нотатка

    Для джерел даних SharePoint і Excel, які містять імена стовпців із пробілами, укажіть кожен пробіл як "_x0020_". Наприклад, укажіть "Ім’я стовпця" як "Ім’я_x0020_стовпця".

SortByColumns( Таблиця, Ім’я стовпця, Відсортована таблиця )

  • Table – обов’язковий аргумент. Таблицю, яку потрібно відсортувати.

  • ColumnName — обов'язковий аргумент. Ім’я стовпця, який потрібно сортувати як рядки.

  • SortOrderTable — обов'язковий аргумент. Таблиця з одним стовпцем значень, яку потрібно відсортувати.

    Нотатка

    Для джерел даних SharePoint і Excel, які містять імена стовпців із пробілами, укажіть кожен пробіл як "_x0020_". Наприклад, укажіть "Ім’я стовпця" як "Ім’я_x0020_стовпця".

Приклади

Для наступних прикладів ми будемо використовувати джерело данихIceCream («Морозиво»), в якому містяться дані в цій таблиці:

Приклад Iceсream.

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

SortByColumns( Морозиво, "Смак" )
Сортує Морозиво за її стовпцем Смак. У стовпці Смак містяться рядки, тому таблицю можна відсортувати в алфавітному порядку. Значення за замовчуванням: за зростанням. Сортування за алфавітом.
Sort( Морозиво, Кількість )

SortByColumns( Морозиво, "Кількість" )
Сортує Морозиво за її стовпцем Кількість. У стовпці Кількість містяться числа, тому таблицю можна відсортувати за числовими значеннями. Значення за замовчуванням: за зростанням. Сортування за числовим значенням.
Sort( Морозиво, Кількість, Порядок сортування.За спаданням )

SortByColumns( Морозиво, "Кількість", Порядок сортування.За спаданням )
Сортує Морозиво за її стовпцем Кількість. У стовпці Кількість містяться числа, тому сортування виконується за числовими значеннями. Порядок сортування вибрано за спаданням. Сортування за числовим значенням і за спаданням.
Sort( Морозиво, Кількість + Замовлення ) Сортує Морозиво за сумою його стовпців Кількість та Замовлення для кожного запису окремо. Сума — це число, тому таблиця сортується за числовими значеннями. Значення за замовчуванням: за зростанням. Оскільки ми сортуємо за формулою, а не за необробленими значеннями стовпців, не існує еквівалента використанню SortByColumns. Сортування за числовим значенням і за зростанням.
Sort( Sort( Морозиво, Замовлення ), Кількість )

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

Покрокові інструкції

Щоб виконати ці приклади самостійно, створіть джерело даних Морозиво в колекції:

  1. Додайте кнопку та налаштуйте її властивість OnSelect відповідно до нижченаведеної формули.
    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, щоб повернутися до робочої області за замовчуванням.
  3. Виберіть Колекції в меню Файл, щоб відобразити щойно створену колекцію, а потім натисніть клавішу Esc, щоб повернутися до робочої області за замовчуванням.

Сортувати

  1. Додайте іншу кнопку та налаштуйте для її властивості Замовлення нижченаведену формулу.
    ClearCollect( Сортувати за смаком, Sort( Морозиво, Смак ) )

    У попередній формулі створюється друга колекція з назвою Сортувати за смаком, яка містить ті ж дані, що й Морозиво. Проте нова колекція містить дані, відсортовані в алфавітному порядку за стовпцем Смак у порядку зростання.

  2. Натисніть клавішу F5, натисніть нову кнопку, а потім натисніть клавішу Esc.

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

  4. Повторіть останні три кроки, але змініть ім’я колекції, яку необхідно створити, і замініть формулу Сортування іншою формулою з таблиці прикладів на початку цього розділу, в якій використовується Сортування.

SortByColumns

  1. Додайте іншу кнопку та налаштуйте для її властивості Замовлення нижченаведену формулу.
    ClearCollect( SortByQuantity, SortByColumns( IceCream, "Кількість", SortOrder.За зростанням, "Смак", SortOrder.За спаданням ) )

    У попередній формулі створюється третя колекція з назвою Сортувати за кількістю, яка містить ті ж дані, що й Морозиво. Проте нова колекція містить дані, відсортовані за числами за стовпцем Кількість у порядку зростання, а потім за стовпцем Смак у порядку спадання.

  2. Натисніть клавішу F5, натисніть нову кнопку, а потім натисніть клавішу Esc.

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

  4. Повторіть останні три кроки, але змініть ім’я колекції, яку необхідно створити, і замініть формулу Сортувати за стовпцями іншою формулою з таблиці прикладів на початку цього розділу, в якій використовується Сортувати за стовпцями.