Функції фільтрації, пошуку та пошуку
Застосовується до: програм Canvas Потоків робочого столу Програм Power Pages Power Platform CLI на основі моделі
Пошук одного або кількох записів у таблиці.
Перегляньте це відео, щоб дізнатися, як користуватися функціями фільтра, ** пошуку та пошуку :
Нотатка
Команди PAC CLI pac power-fx не підтримують функцію пошуку .
Опис
Функція Filter знаходить у таблиці записи, які відповідають певній формулі. За допомогою фільтра можна знайти набір записів, які відповідають одному або кільком критеріям, і відхилити ті записи, які не відповідають.
Функція LookUp знаходить перший запис у таблиці, що відповідає формулі. За допомогою функції LookUp можна знайти один запис, що відповідає одному або декільком критеріям.
В обох випадках формула обчислюється для кожного запису таблиці. Записи зі значенням true включаються в результат. Окрім звичайних операторів формул можна скористатися операторами in та exactin для збігів підрядків.
Поля оброблюваного запису доступні у формулі. Використовуйте оператор ThisRecord або просто вкажіть посилання на поля за іменем, як у випадку з будь-яким іншим значенням. Оператор As також можна використовувати для призначення імені оброблюваного запису, що спростить сприймання формули та зробить вкладені записи доступними. Додаткову інформацію див. у прикладах нижче та в статті Робота з областю застосування записів.
Функція Search знаходить записи в таблиці, які містять рядок в одному зі своїх стовпців. Рядок може зустрічатися в будь-якому місці стовпця; наприклад, якщо ввести запит "роб" або "берт", то можна знайти збіг у стовпці, який містить "Роберт". Під час пошуку не враховується регістр. На відміну від функцій Filter і LookUp, функція Search використовує один рядок для пошуку відповідностей, а не формулу.
Фільтр і пошук повертають таблицю, яка містить ті самі стовпці, що й вихідна таблиця, і записи, які відповідають критеріям. LookUp повертає лише перший знайдений запис після застосування формули для зменшення запису до одного значення. Якщо не буде знайдено жодного запису, функції Filter і Search повернуть пусту таблицю, а функція LookUp – пусте значення.
Таблиці є значенням Power Apps, так само як рядок або число. Їх можна передавати в функції та повертати від функцій. Фільтр, пошук і LookUp не змінюють таблицю. Замість цього вони обробляють таблицю як аргумент і повертають таблицю, запис або одне значення з нього. Додаткові відомості див. в розділі Робота з таблицями.
Делегування
За можливості Power Apps делегуватимуть операції фільтрування й сортування джерелу даних і розбиватимуть результати на сторінки за запитом. Наприклад, якщо ви запустите програму, яка показує Галерею даних, на пристрій спочатку буде завантажено лише перший набір записів. Додаткова інформація завантажуватиметься з джерела даних, коли користувач прокручуватиме галерею. Це прискорює запуск програм і доступ до дуже великих наборів даних.
Утім, делегування не завжди можливе. Джерела даних відрізняються за наборами функцій і операторів, які вони підтримують під час делегування. Якщо повністю делегувати формулу неможливо, неделеговану частину буде виділено в редакторі з попередженням. Якщо можливо, спробуйте змінити формулу, відмовившись від функцій і операторів, які не можна делегувати. У списку делегування перелічено всі джерела даних і операції, які можна делегувати.
Якщо делегування неможливе, Power Apps завантажить лише невеликий набір записів для локальної обробки. Функції фільтрування й сортування працюватимуть з обмеженим набором записів. Тобто в Галереї може відображатися не вся історія, що може спантеличити користувачів.
Додаткову інформацію див. у статті Огляд делегування.
Синтаксис
Фільтр(Таблиця*, Формула1 [, *Формула2*, ... ] )
- Таблиця - обов’язковий. Таблиця для виконання пошуку.
- Формули- обов’язкові . Формула, за якою обчислюється кожний запис таблиці. Функція повертає всі записи зі значенням true. В таблиці можна посилатися на стовпці. Якщо вказати кілька формул, результати усіх формул поєднуються за допомогою функції And.
Search(Таблиця*, SearchString,Стовпець1 [, *Стовпець2*, ... ] )
- Таблиця - обов’язковий. Таблиця для виконання пошуку.
- SearchString - обов’язковий. Рядок для пошуку. У разі пустого значення або пустого рядка повертаються всі записи.
- Стовпчики - обов’язкові . Імена стовпців у таблиці для пошуку. Якщо SearchString буде знайдено в даних будь-якого з цих стовпців як частковий збіг, повернеться повний запис.
Нотатка
До Power Apps версії 3.24042 імена стовпців для функції Search вказувалися текстовим рядком з використанням подвійних лапок, а якщо підключати до джерело даних, то вони також повинні були бути логічними іменами. Наприклад, замість відображуваного імені Ім’я без лапок використовувалося логічне ім’я "cr43e_name " з подвійними лапками . Для SharePoint джерел даних і джерел даних Excel, які містять імена стовпців із пробілами, кожен пробіл було вказано за допомогою "_x0020_", наприклад "Ім’я стовпця" як "Column_x0020_Name". Після цієї версії всі програми були автоматично оновлені до нового синтаксису, описаного в цій статті.
LookUp(Таблиця*, Формула [, Формула скорочення] )
- Таблиця - обов’язковий. Таблиця для виконання пошуку. В інтерфейсі користувача синтаксис відображається як джерело над полем функції.
- Формула - Обов’язкова. Формула, за якою обчислюється кожний запис таблиці. Функція повертає перший запис зі значенням true. В таблиці можна посилатися на стовпці. В інтерфейсі користувача синтаксис відображається як умова над полем функції.
- Формула скорочення- необов’язкова. Ця формула обчислюється для знайденого запису, а потім вона скорочує запис до одного значення. В таблиці можна посилатися на стовпці. Якщо цей параметр не використовується, функція повертає повний запис із таблиці. В інтерфейсі користувача синтаксис відображається як результат над полем функції.
Приклади
У наступних прикладах використовується джерело данихIceCream (Морозиво).
Формула | Опис | Результат |
---|---|---|
Фільтр(Морозиво, Замовлення > 0) | Повертає записи, у яких значення стовпця OnOrder (Замовлено) більше нуля. | |
Фільтр(Морозиво, кількість + Під замовлення > 225) | Повертає записи, у яких сума значень стовпців Quantity (Кількість) і OnOrder більше 225. | |
Фільтр(Морозиво, "шоколад" у нижчому (смак)) | Повертає записи, у яких у стовпці Flavor (Смак) міститься слово «chocolate» (шоколадне), незалежно від регістру. | |
Фільтр (морозиво, кількість < 10 && під замовлення < 20) | Повертає записи, у яких значення стовпця Quantity менше 10, а стовпця OnOrder – менше 20. Цим критеріям не відповідає жоден запис, тому буде повернуто пусту таблицю. | |
Пошук(Морозиво, "шоколад", Смак) | Повертає записи, у яких у стовпці Flavor міститься рядок «choc» (шок), незалежно від регістру. | |
Пошук(Морозиво, "," Смак) | Оскільки пошуковий термін не вказаний, повертаються всі записи. | |
LookUp(морозиво, смак = "шоколад", кількість) | Шукає запис зі смаком , що дорівнює «Шоколад», яких є один. Для першого знайденого запису повертає значення стовпця Quantity. | 100 |
LookUp(Морозиво, кількість > 150, кількість + Під замовлення) | Виконує пошук запису, у якому значення стовпця Quantity більше 150 (таких записів кілька). Для першого знайденого запису, у якому стовпець Flavor містить значення «Vanilla» (Ванільне), повертає суму значень стовпців Quantity та OnOrder. | 250 |
LookUp(Морозиво, Смак = "Фісташка", На замовлення) | Виконує пошук запису, у якому значенням стовпця Flavor є слово «Pistachio» (Фісташкове) (такі записи відсутні). Оскільки нічого не знайдено, функція Lookup (підстановка) повертає значення blank (пусто). | Порожній |
LookUp(Морозиво, Смак = "Ваніль") | Шукає платівку зі смаком , що дорівнює «Vanilla», з яких є одна. Оскільки не було вказано формулу для скорочення, повертається весь запис. | { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 } |
Фільтрування за допомогою окремих стовпців
Наведений нижче приклад використовує в якості джерела даних таблицю Бізнес-партнер у Microsoft Dataverse. Цей приклад показує, як фільтрувати список бізнес-партнерів на основі значень елемента керування «поле зі списком»:
Покрокові інструкції
Відкрийте пусту програму.
Додайте новий екран за допомогою параметру Новий екран.
На вкладці Вставлення виберіть Галерея, а потім виберіть пункт Вертикальна.
На вкладці Властивості області праворуч, відкрийте меню Джерело даних, а потім виберіть Бізнес-партнери.
(Необов'язково) У списку Макет, виберіть інші параметри.
На вкладці Вставлення виберіть Введення, а потім виберіть пункт Поле зі списком. Повторіть крок, щоб додати ще два елементи керування "Поле зі списком".
Для кожного елементу керування "Поле зі списком", на вкладці Властивості області праворуч, відкрийте меню Джерело даних, а потім виберіть Бізнес-партнери. Натисніть Редагувати поряд з параметром Поля, та виберіть значення Основний текст та SearchField. Основним текстом має бути стовпець варіантів, який ви хочете додати до поля зі списком. Повторіть крок з двома іншими елементами керування "Поле зі списком".
Тепер виберіть елемент керування Галерея та задайте наведену нижче формулу у властивості Елементи.
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(Клієнти, Таблиця{ (Назва: "Фред Гарсія", Компанія: "Northwind Traders" }, { Назва: "Коул Міллер", Компанія: "Contoso" }, { Назва: "Glenda Johnson", Компанія: "Contoso" }, { Назва: "Mike Collins", Компанія: "Adventure Works" }, { Назва: "Colleen Jones", Компанія: "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(Клієнти, StartsWith(Ім’я, SearchInput.Text) || StartsWith(Компанія, SearchInput.Text) ) | Фільтрує джерела даних Клієнти за записами, в яких стовпець Ім’я або стовпець Компанія починається з рядка пошуку (наприклад co). ||Оператор має значення true, якщо функція StartsWith має значення true. | |
Фільтр(Клієнти, SearchInput.Текст в імені || Пошукове введення. текст у компанії) | Відфільтровує в джерелі даних Клієнти записи, в яких стовпець Ім’я або стовпець Компанія містить рядок пошуку (наприклад, co) у будь-якому місці стовпців. | |
Search(Клієнти, SearchInput.Text, Назва, Компанія) | Подібно до використання оператора in функція Search виконує пошук в джерелі даних Клієнти для записів, в яких стовпець Ім’я або стовпець Компанія містить рядок пошуку (наприклад, co) у будь-якому місці стовпців. Функцію Search простіше читати та записувати, ніж Filter, якщо потрібно вказати кілька стовпців і кілька операторів in. |