Функции за филтриране, търсене и търсене
Отнася се за: Canvas apps
Desktop flows
Model-driven apps
Power Pages
Power Platform CLI
Намира един или повече записи в таблица.
Гледайте този видеоклип, за да научите как да използвате функциите "Филтър", ** "Търсене" и "Търсене ":
Бележка
Командите PAC CLI pac power-fx не поддържат функцията за търсене .
Описание
Функцията Filter намира записите в таблица, които отговарят на формула, която сте посочили. Използвайте "Филтър ", за да намерите набор от записи, които отговарят на един или повече критерии, и да отхвърлите записите, които не отговарят на този критерий.
Функцията LookUpнамира първия запис в таблица, който удовлетворява формула. Използвате LookUp, за да намерите единичен запис, който отговаря на един или повече критерии.
За двете формулата се оценява за всеки запис на Таблицата. Записи, които водят до вярно са включени в резултата. Освен нормалната формула оператори, можете да използвате in и exactin оператори за съвпадения на низ.
Полетата от записа, които се обработват в момента, са достъпни във формулата. Използвайте оператора ThisRecord или просто посочете полета по име, както при всяка друга стойност. Операторът As може също така да бъде използван за задаване на име на записа, който се обработва, което може да помогне вашата формула да стане по-лесна за разбиране и вложените записи да са достъпни. За повече информация вижте примерите по-долу и работа с обхвата на запис.
Функцията Search намира записи в таблица, които съдържат низ в една от колоните им. Низът може да се появи навсякъде в колоната; например, търсенето на "rob" или "bert" ще намери съвпадение в колона, която съдържа "Robert". Търсенето е нечувствително към регистър. За разлика от Filter и LookUp, Search функция използва един низ, за да съвпадне вместо формула.
Filter и Search връщат таблица, която съдържа същите колони като оригиналната таблица и записите, които отговарят на критериите. LookUp връща само първия намерен запис, след като приложи формула за намаляване на записа до една стойност. Ако не бъдат намерени записи, Filter и Search връщат empty таблица и LookUp връща празно.
Таблици е стойност в Power Apps, точно като низ или число. Те могат да бъдат предадени и върнати от функциите. Filter, Search и LookUp не променят таблица. Вместо това те приемат таблица като аргумент и връщат таблица, запис или единична стойност от нея. Вижте Работа с таблици за повече подробности.
Делегиране
Когато е възможно, Power Apps ще делегира операции за филтриране и сортиране на източника на данни и ще прелиства резултатите по заявка. Например, когато стартирате приложение, което показва контрола Галерия, попълнена с данни, първоначално само първият набор от записи ще бъде въведен на устройството. Докато потребителят превърта, се въвеждат допълнителни данни от източника на данни. Резултатът е по-кратко време на стартиране на приложението и достъп до много големи набори от данни.
Обаче делегирането може да не възможно винаги. Източниците на данни са различни в зависимост от функциите и операторите, които поддържат с делегиране. Ако не е възможно пълно делегиране на формула, средата за създаване ще маркира частта, която не може да се делегира, с предупреждение. Когато е възможно, обмислете промяна на формулата, за да избегнете функциите и операторите, които не могат да се делегират. Списъкът за делегиране изброява подробно кои източници на данни и операции могат да се делегират.
Ако делегирането не е възможно, Power Apps ще извлече само малък набор от записи, с които да работи локално. Функциите за филтриране и сортиране ще работят на ограничен набор от записи. Наличното в галерията може да не е пълно, което може да обърка потребителите.
Вижте прегледа на делегирането за повече информация.
Синтаксис
Filter(Table*, Formula1 [, *Formula2*, ... ] )
- Table – Задължително. Таблица за търсене.
- Formula(s) - Задължително. Формулата, по която се оценява всеки запис на таблицата. Функцията връща всички записи, които водят до вярно. Можете да посочите колони в таблицата. Ако предоставите повече от една формула, резултатите от всички формули се комбинират с 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 – Задължително. Формулата, по която се оценява всеки запис на таблицата. Функцията връща всички първия запис, който води до вярно. Можете да посочите колони в таблицата. В потребителския интерфейс синтаксисът е показан като условие над полето за функции.
- ReductionFormula - Опционално. Тази формула се оценява върху записа, който е намерен, и след това намалява записа до една стойност. Можете да посочите колони в таблицата. Ако не използвате този параметър, функцията връща пълния запис от таблицата. В потребителския интерфейс синтаксисът е показан като резултат над полето за функции.
Примери
Следващите примери използват IceCreamизточник на данни:
Формула | Описание | Result |
---|---|---|
Filter( IceCream, OnOrder > 0 ) | Връща записи, където OnOrder е по-голяма от нула. |
![]() |
Filter( IceCream, Quantity + OnOrder > 225 ) | Връща записи, където сумата от количество и OnOrder колоните е по-голяма от 225. |
![]() |
Filter( IceCream, "chocolate" in Lower( Flavor ) ) | Връща записи, където думата „шоколад“ се появява в името вкус, независимо от главни или малки букви. |
![]() |
Филтър (сладолед, количество < 10 & OnOrder < 20) | Връща записи, където количество е по-малко от 10 и OnOrder е по-малко от 20. Няма записи, които отговарят на тези критерии, така че се връща празна таблица. |
![]() |
Търсене (сладолед, "шоколад", аромат) | Връща записи, където низът „choc“ се появява в името вкус, независимо от главни или малки букви. |
![]() |
Търсене (сладолед, "", аромат) | Тъй като думата за търсене е празна, всички записи се връщат. |
![]() |
LookUp( IceCream, Flavor = "Chocolate", Quantity ) | Търси запис с вкус , равен на "шоколад", от който има един. За първия намерен запис връща Quantity от този запис. | 100 |
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) | Търси запис с количество по-големи от 150, от които има множество. За първия открит запис, който е „Ванилия“ вкус, връща сумата от количество и OnOrder колони. | 250 |
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) | Търси запис с вкус равен на „Pistachio“, от които няма. Понеже няма намерени, търсенето връща празно. | празно |
LookUp( IceCream, Flavor = "Vanilla" ) | Търси запис с Flavor , равен на "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(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( Customers, StartsWith( Name, SearchInput.Text ) ) | Филтрира Клиенти източник на данни за записи, в които низът за търсене се появява в началото на име колона. Тестът нечувствителен към регистър. Ако потребителят въведе co в полето за търсене показва галерията Colleen Jones и Cole Miller. Галерията не се показва Mike Collins, защото име колоната за този запис не започва с низ за търсене. |
![]() |
Filter( Customers, SearchInput.Text in Name ) | Филтрира Клиенти източник на данни за записи, в които низът за търсене се появява където и да е в колоната име. Тестът нечувствителен към регистър. Ако потребителят въведе co в полето за търсене показва галерията Colleen Jones, Cole Miller, и Mike Collins, защото низът за търсене се появява някъде в име колона на всички тези записи. |
![]() |
Търсене (Клиенти, SearchInput.Text, Име) | Подобно на използването на в оператора, функцията Търсене търси съвпадение навсякъде в име колона на всеки запис. Трябва да включите името на колоната в двойни кавички. |
![]() |
Можете да разширите търсенето си, за да включите колоната Фирма и колоната Име:
Формула | Описание | Резултат |
---|---|---|
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), навсякъде с него. |
![]() |
Търсене (Клиенти, SearchInput.Text, Име, Фирма) | Подобно на използването на in оператор функцията Search търси Клиенти източник на данни за записи, в които или име колоната, или Компания колоната съдържа низа за търсене (например, co), навсякъде с него. Функцията Search е по-лесна за четене и писане, отколкото Filter, ако искате да посочите няколко колони и множество in оператори. |
![]() |