Функції фільтрації, пошуку та пошуку

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

Пошук одного або кількох записів у таблиці.

Перегляньте це відео, щоб дізнатися, як користуватися функціями фільтра, ** пошуку та підстановки :

Нотатка

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

Опис

Функція Filter знаходить у таблиці записи, які відповідають певній формулі. За допомогою фільтра можна знайти набір записів, які відповідають одному або кільком критеріям, і відкинути ті записи, які не відповідають їхнім критеріям.

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

В обох випадках формула обчислюється для кожного запису таблиці. Записи зі значенням true включаються в результат. Окрім звичайних операторів формул можна скористатися операторами in та exactin для збігів підрядків.

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

Функція Search знаходить записи в таблиці, які містять рядок в одному зі своїх стовпців. Рядок може зустрічатися в будь-якому місці стовпця; наприклад, якщо виконати пошук за словом «роб» або «берт», у стовпці, який містить слово «Роберт», буде знайдено збіг. Під час пошуку не враховується регістр. На відміну від функцій Filter і LookUp, функція Search використовує один рядок для пошуку відповідностей, а не формулу.

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

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

Делегування

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

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

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

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

Синтаксис

Filter(Table*, Formula1 [, *Formula2*, ... ] )

  • Table – обов’язковий аргумент. Таблиця для виконання пошуку.
  • Formula(s) – обов’язковий аргумент. Формула, за якою обчислюється кожний запис таблиці. Функція повертає всі записи зі значенням true. В таблиці можна посилатися на стовпці. Якщо вказати кілька формул, результати усіх формул поєднуються за допомогою функції And.

Search(Table*, SearchString, Column1 [, *Column2*, ... ] )

  • Table – обов’язковий аргумент. Таблиця для виконання пошуку.
  • SearchString – обов’язковий аргумент. Рядок для пошуку. У разі пустого значення або пустого рядка повертаються всі записи.
  • Column(s) – обов’язковий аргумент. Імена стовпців у таблиці для пошуку. Якщо SearchString буде знайдено в даних будь-якого з цих стовпців як частковий збіг, повернеться повний запис.

Нотатка

До Power Apps версії 3.24042 назви стовпців для функції Search вказувалися текстовим рядком з використанням подвійних лапок, і якщо вони були підключені до джерело даних, вони також повинні були бути логічними іменами. Наприклад, замість відображуваного імені Ім’я без лапок було використано логічне ім’я "cr43e_name" з подвійними лапками . Для SharePoint джерел даних і джерел даних Excel, які містять імена стовпців із пробілами, кожен пробіл указувався за допомогою «_x0020_», наприклад «Ім’я стовпця» як «Column_x0020_Name». Після цієї версії всі програми були автоматично оновлені до нового синтаксису, описаного в цій статті.

LookUp(Table*, Formula [, *ReductionFormula* ] )

  • Table – обов’язковий аргумент. Таблиця для виконання пошуку. В інтерфейсі користувача синтаксис відображається як джерело над полем функції.
  • Formula – обов’язковий аргумент. Формула, за якою обчислюється кожний запис таблиці. Функція повертає перший запис зі значенням true. В таблиці можна посилатися на стовпці. В інтерфейсі користувача синтаксис відображається як умова над полем функції.
  • ReductionFormula – необов’язковий аргумент. Ця формула обчислюється для знайденого запису, а потім вона скорочує запис до одного значення. В таблиці можна посилатися на стовпці. Якщо цей параметр не використовується, функція повертає повний запис із таблиці. В інтерфейсі користувача синтаксис відображається як результат над полем функції.

Приклади

У наступних прикладах використовується джерело данихIceCream (Морозиво).

Морозиво джерело даних.

Формула Опис Результат
Filter( IceCream, OnOrder > 0 ) Повертає записи, у яких значення стовпця OnOrder (Замовлено) більше нуля. Фільтр Під замовлення.
Filter( IceCream, Quantity + OnOrder > 225 ) Повертає записи, у яких сума значень стовпців Quantity (Кількість) і OnOrder більше 225. Фільтруйте кількість і замовлення.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Повертає записи, у яких у стовпці Flavor (Смак) міститься слово «chocolate» (шоколадне), незалежно від регістру. Проціджують в нижньому.
Фільтр (морозиво, кількість < 10 і під замовлення < 20) Повертає записи, у яких значення стовпця Quantity менше 10, а стовпця OnOrder – менше 20. Цим критеріям не відповідає жоден запис, тому буде повернуто пусту таблицю. Фільтр за кількістю.
Пошук(Морозиво, "choc", Смак) Повертає записи, у яких у стовпці Flavor міститься рядок «choc» (шок), незалежно від регістру. Пошук елементів.
Пошук(Морозиво, "", Смак) Оскільки пошуковий термін не вказаний, повертаються всі записи. Пошук у всіх елементах.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Шукає запис зі смаком , що дорівнює «Шоколад», з якого є один. Для першого знайденого запису повертає значення стовпця Quantity. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Виконує пошук запису, у якому значення стовпця Quantity більше 150 (таких записів кілька). Для першого знайденого запису, у якому стовпець Flavor містить значення «Vanilla» (Ванільне), повертає суму значень стовпців Quantity та OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Виконує пошук запису, у якому значенням стовпця Flavor є слово «Pistachio» (Фісташкове) (такі записи відсутні). Оскільки нічого не знайдено, функція Lookup (підстановка) повертає значення blank (пусто). пусто
LookUp( IceCream, Flavor = "Vanilla" ) Шукає запис зі смаком , рівним «Vanilla», з яких є один. Оскільки не було вказано формулу для скорочення, повертається весь запис. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Фільтрування за допомогою окремих стовпців

Наведений нижче приклад використовує в якості джерела даних таблицю Бізнес-партнер у Microsoft Dataverse. Цей приклад показує, як фільтрувати список бізнес-партнерів на основі значень елемента керування «поле зі списком»:

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

  1. Відкрийте пусту програму.

  2. Додайте новий екран за допомогою параметру Новий екран.

  3. На вкладці Вставлення виберіть Галерея, а потім виберіть пункт Вертикальна.

  4. На вкладці Властивості області праворуч, відкрийте меню Джерело даних, а потім виберіть Бізнес-партнери.

  5. (Необов'язково) У списку Макет, виберіть інші параметри.

  6. На вкладці Вставлення виберіть Введення, а потім виберіть пункт Поле зі списком. Повторіть крок, щоб додати ще два елементи керування "Поле зі списком".

  7. Для кожного елементу керування "Поле зі списком", на вкладці Властивості області праворуч, відкрийте меню Джерело даних, а потім виберіть Бізнес-партнери. Натисніть Редагувати поряд з параметром Поля, та виберіть значення Основний текст та SearchField. Основним текстом має бути стовпець варіантів, який ви хочете додати до поля зі списком. Повторіть крок з двома іншими елементами керування "Поле зі списком".

    Встановлення значень спадного списку.

  8. Тепер виберіть елемент керування Галерея та задайте наведену нижче формулу у властивості Елементи.

    Filter(Accounts,
     'Industry' = ComboBox3.Selected.Industry Or IsBlank(ComboBox3.Selected.Industry),
     'Relationship Type' = ComboBox2.Selected.'Relationship Type' Or
       IsBlank(ComboBox2.Selected.'Relationship Type'),
     'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact' Or
       IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
    

    Облікові записи джерело даних.

Можливості пошуку для користувача

У наступних прикладах використовується джерело данихIceCream (Морозиво).

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

У прикладах, наведених у решті цієї статті, наведено результати пошуку за списком із назвою Клієнти, який містить ці дані.

Пошук по клієнтам.

Щоб створити це джерело даних як колекцію, створіть елемент керування Кнопка і встановіть для його властивості OnSelect цю формулу.

ClearCollect(Customers, Table({ Name: "Fred Garcia", Company: "Northwind Traders" }, { Name: "Cole Miller", Company: "Contoso" }, { Name: "Glenda Johnson", Company: "Contoso" }, { Name: "Mike Collins", Company: "Adventure Works" }, { Name: "Colleen Jones", Company: "Adventure Works" }) )

У цьому прикладі можна відобразити список записів у елементі керування "Галерея" в нижній частині екрана. У верхній частині екрана можна додати елемент керування Введення тексту, названий SearchInput, щоб користувачі могли визначити записи, які їх цікавлять.

Пошук за допомогою пошукового введення.

Коли користувач вводить символи в поле SearchInput, результати в галереї автоматично фільтруються. У цьому випадку галерею настроєно на відображення записів, для яких ім’я клієнта (а не назва компанії) починається з послідовності символів у елементі керування з іменем SearchInput. Якщо користувач уведе в полі пошуку літери «co», галерея відобразить зазначені нижче результати.

Пошук починається з.

Щоб фільтрувати на основі стовпця Ім’я, налаштуйте для властивості Елементи елемента керування галереєю одну з таких формул:

Формула Опис Результат
Filter( Клієнти, StartsWith( Ім’я, SearchInput.Text ) ) Відфільтровує в джерелі даних Клієнти записи, в яких рядок пошуку відображається на початку стовпця Ім’я. Перевірка нечутлива до регістру. Якщо користувач вводить co у поле пошуку, в галереї відображаються Colleen Jones і Cole Miller. У колекції не відображається Mike Collins, оскільки стовпець Ім’я для цього запису не починається з рядка пошуку. Фільтр з початку.
Filter( Клієнти, SearchInput.Text у Ім’я ) Відфільтровує в джерелі даних Клієнти записи, в яких рядок пошуку відображається в будь-якому місці стовпця Ім’я. Перевірка нечутлива до регістру. Якщо користувач вводить co у поле пошуку, в галереї відобразяться Colleen Jones,Cole Miller і Mike Collins, оскільки рядок пошуку присутній десь у стовпці Ім’я всіх цих записів. Фільтр з пошуковим введенням.
Search(Клієнти, SearchInput.Text, Назва) Подібно до використання оператора in, функція Search виконує пошук збігів у всьому стовпці Ім’я кожного запису. Необхідно поставити назву стовпця у подвійні лапки. Пошук клієнтів.

Пошук можна розширити включенням в нього стовпців Компанія та Ім'я:

Формула Опис Результат
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Фільтрує джерела даних Клієнти за записами, в яких стовпець Ім’я або стовпець Компанія починається з рядка пошуку (наприклад co). ||Оператор має значення true, якщо функція StartsWith має значення true. Фільтруйте клієнтів для початку.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Відфільтровує в джерелі даних Клієнти записи, в яких стовпець Ім’я або стовпець Компанія містить рядок пошуку (наприклад, co) у будь-якому місці стовпців. Фільтруйте пошукові дані клієнтів.
Search(Клієнти, SearchInput.Text, Назва, Компанія) Подібно до використання оператора in функція Search виконує пошук в джерелі даних Клієнти для записів, в яких стовпець Ім’я або стовпець Компанія містить рядок пошуку (наприклад, co) у будь-якому місці стовпців. Функцію Search простіше читати та записувати, ніж Filter, якщо потрібно вказати кілька стовпців і кілька операторів in.  Пошук клієнтів за допомогою пошукового введення.