Функции Filter, Search и LookUp в PowerAppsFilter, Search, and LookUp functions in PowerApps

Эти функции выполняют поиск записей в таблице.Finds one or more records in a table.

ОписаниеDescription

Функция Filter находит записи в таблице, соответствующие заданным условиям формулы.The Filter function finds records in a table that satisfy a formula. Используйте функцию Filter, чтобы найти набор записей, соответствующих одному или нескольким условиям, или удалить наборы, не соответствующие заданным условиям.Use Filter to find a set of records that match one or more criteria and to discard those that don't.

Функция LookUp находит первую запись в таблице, соответствующую условиям формулы.The LookUp function finds the first record in a table that satisfies a formula. Используйте функцию LookUp, чтобы найти отдельную запись, соответствующую одному или нескольким условиям.Use LookUp to find a single record that matches one or more criteria.

В обоих случаях формула вычисляется для каждой записи этой таблицы.For both, the formula is evaluated for each record of the table. Записи, возвращающие значение true, включаются в результат.Records that result in true are included in the result. Помимо обычных операторов формулы, вы можете использовать операторы поиска соответствий подстроки in и exactin.Besides the normal formula operators, you can use the in and exactin operators for substring matches.

Fields of the record currently being processed are available within the formula. You simply reference them by name as you would any other value. You can also reference control properties and other values from throughout your app. For more details, see the examples below and working with record scope.

Функция Search находит записи в таблице, содержащие строку в одном из столбцов.The Search function finds records in a table that contain a string in one of their columns. Строка может находиться в любом месте столбца. Например, выполняя поиск по фразе rob или bert, соответствие может быть обнаружено в столбце со словом Robert.The string may occur anywhere within the column; for example, searching for "rob" or "bert" would find a match in a column that contains "Robert". При поиске регистр не учитывается.Searching is case-insensitive. В отличие от функций Filter и LookUp, функция Search выполняет поиск при помощи одной строки, а не формулы.Unlike Filter and LookUp, the Search function uses a single string to match instead of a formula.

Функции Filter и Search возвращают таблицу, которая содержит те же столбцы, что и исходная таблица, и записи, соответствующие заданным условиям.Filter and Search return a table that contains the same columns as the original table and the records that match the criteria. В то время как функция LookUp возвращает только первую найденную запись после применения формулы для сведения записи к одному значению.LookUp returns only the first record found, after applying a formula to reduce the record to a single value. Если записи не обнаружены, функции Filter и Search возвращают пустую таблицу, а функция LookUpпустое значение.If no records are found, Filter and Search return an empty table, and LookUp returns blank.

Таблицы в PowerApps представлены значением, как любая строка или число.Tables are a value in PowerApps, just like a string or number. Их можно передавать в функции и получать в качестве результата выполнения функций.They can be passed to and returned from functions. Функции Filter, Search и LookUp не изменяют исходную таблицу,Filter, Search, and LookUp don't modify a table. а принимают ее в качестве аргумента и возвращают таблицу, запись или отдельное значение из нее.Instead, they take a table as an argument and return a table, a record, or a single value from it. Подробнее это описано здесь.See working with tables for more details.

Delegation

When possible, PowerApps will delegate filter and sort operations to the data source and page through the results on demand. For example, when you start an app that shows a Gallery control filled with data, only the first set of records will be initially brought to the device. As the user scrolls, additional data is brought down from the data source. The result is a faster start time for the app and access to very large data sets.

However, delegation may not always be possible. Data sources vary on what functions and operators they support with delegation. If complete delegation of a formula isn't possible, the authoring environment will flag the portion that can't be delegated with a warning. When possible, consider changing the formula to avoid functions and operators that can't be delegated. The delegation list details which data sources and operations can be delegated.

If delegation is not possible, PowerApps will pull down only a small set of records to work on locally. Filter and sort functions will operate on a reduced set of records. What is available in the Gallery may not be the complete story, which could be confusing to users.

See the delegation overview for more information.

СинтаксисSyntax

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

  • Table — обязательный аргумент.Table - Required. Таблица для поиска.Table to search.
  • Formula(s) — обязательный параметр.Formula(s) - Required. Формула, по которой вычисляется каждая запись этой таблицы.The formula by which each record of the table is evaluated. Функция возвращает все записи, возвращающие значение true.The function returns all records that result in true. Можно ссылаться на любые столбцы в таблице.You can reference columns within the table. Если указано несколько формул, их результаты объединяются с результатами функции And.If you supply more than one formula, the results of all formulas are combined with the And function.

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

  • Table — обязательный аргумент.Table - Required. Таблица для поиска.Table to search.
  • SearchString — обязательный параметр.SearchString - Required. Строка для поиска.The string to search for. Если указать пустое значение или пустую строку, возвращаются все записи.If blank or an empty string, all records are returned.
  • Column(s) — обязательный параметр.Column(s) - Required. Имена столбцов в таблице для поиска.The names of columns within Table to search. Столбцы для поиска должны содержать текст.Columns to search must contain text. Имена столбцов должны быть строками, заключенными в двойные кавычки.Column names must be strings and enclosed in double quotes. Тем не менее эти имена должны быть статическими и не могут вычисляться с помощью формулы.However, the column names must be static and cannot be calculated with a formula. Если параметр SearchString найден в данных любого из этих столбцов в виде частичного совпадения, возвращается полная запись.If SearchString is found within the data of any of these columns as a partial match, the full record will be returned.

Примечание. Для источников данных SharePoint и Excel, содержащих имена столбцов с пробелами, вместо каждого пробела укажите "_x0020_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Например, Имя столбца укажите как Имя_x0020_столбца.For example, specify "Column Name" as "Column_x0020_Name".

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

  • Table — обязательный аргумент.Table - Required. Таблица для поиска.Table to search. В пользовательском интерфейсе синтаксис показан как источник над полем функции.In the UI, the syntax is shown as source above the function box.
  • Formula — обязательный аргумент.Formula - Required. Формула, по которой вычисляется каждая запись этой таблицы.The formula by which each record of the table is evaluated. Функция возвращает первую запись, которая возвращает значение true.The function returns the first record that results in true. Можно ссылаться на любые столбцы в таблице.You can reference columns within the table. В пользовательском интерфейсе синтаксис показан как условие над полем функции.In the UI, the syntax is shown as condition above the function box.
  • ReductionFormula — необязательный параметр.ReductionFormula - Optional. Эта формула вычисляется по найденной записи, а затем эта запись сводится к одному значению.This formula is evaluated over the record that was found, and then reduces the record to a single value. Можно ссылаться на любые столбцы в таблице.You can reference columns within the table. Если этот параметр не задан, функция возвращает полную запись из таблицы.If you don't use this parameter, the function returns the full record from the table. В пользовательском интерфейсе синтаксис показан как результат над полем функции.In the UI, the syntax is shown as result above the function box.

ПримерыExamples

В приведенных ниже примерах используется источник данных IceCream.The following examples use the IceCream data source:

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
Filter( IceCream, OnOrder > 0 )Filter( IceCream, OnOrder > 0 ) Возвращает записи, где OnOrder больше нуля.Returns records where OnOrder is greater than zero.
Filter( IceCream, Quantity + OnOrder > 225 )Filter( IceCream, Quantity + OnOrder > 225 ) Возвращает записи, где сумма значений в столбцах Quantity и OnOrder больше 225.Returns records where the sum of Quantity and OnOrder columns is greater than 225.
Filter( IceCream, "chocolate" in Lower( Flavor ) )Filter( IceCream, "chocolate" in Lower( Flavor ) ) Возвращает записи, где слово chocolate присутствует в именах в столбце Flavor, независимо от регистра.Returns records where the word "chocolate" appears in the Flavor name, independent of uppercase or lowercase letters.
Filter( IceCream, Quantity < 10 && OnOrder < 20 )Filter( IceCream, Quantity < 10 && OnOrder < 20 ) Возвращает записи, где значение столбца Quantity меньше 10, а столбца OnOrder меньше 20.Returns records where the Quantity is less than 10 and OnOrder is less than 20. Так как записи, соответствующие заданным условиям, отсутствуют, возвращается пустая таблица.No records match these criteria, so an empty table is returned.
Search( IceCream, "choc", "Flavor" )Search( IceCream, "choc", "Flavor" ) Возвращает записи, где строка choc присутствует в именах в столбце Flavor, независимо от регистра.Returns records where the string "choc" appears in the Flavor name, independent of uppercase or lowercase letters.
Search( IceCream, "", "Flavor" )Search( IceCream, "", "Flavor" ) Так как условия поиска не заданы, возвращаются все записи.Because the search term is empty, all records are returned.
LookUp( IceCream, Flavor = "Chocolate", Quantity )LookUp( IceCream, Flavor = "Chocolate", Quantity ) Ищет запись со значением столбца Flavor равным Chocolate (в этом случае найдена только одна запись).Searches for a record with Flavor equal to "Chocolate", of which there is one. Для первой найденной записи возвращает значение столбца Quantity.For the first record that's found, returns the Quantity of that record. 100100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder )LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Ищет запись со значением столбца Quantity большим 100 (в этом случае таких записей несколько).Searches for a record with Quantity greater than 100, of which there are multiple. Для первой найденной записи (в этом случае Vanilla в столбце Flavor) возвращает сумму значений в столбцах Quantity и OnOrder.For the first record that's found, which is "Vanilla" Flavor, returns the sum of Quantity and OnOrder columns. 250250
LookUp( IceCream, Flavor = "Pistachio", OnOrder )LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Ищет запись со значением столбца Flavor равным Pistachio (в этом случае такие записи отсутствуют).Searches for a record with Flavor equal to "Pistachio", of which there are none. Так как запись не найдена, функция Lookup возвращает пустое значение.Because none were found, Lookup returns blank. пустое значениеblank
LookUp( IceCream, Flavor = "Vanilla" )LookUp( IceCream, Flavor = "Vanilla" ) Ищет запись со значением столбца Flavor равным Vanilla (в этом случае найдена только одна запись).Searches for a record with Flavor equal to "Vanilla", of which there is one. Так как формула сведения не применялась, возвращается целая запись.Since no reduction formula was supplied, the entire record is returned. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }{ Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Оптимизация поискаSearch user experience

В большинстве приложений вы можете ввести один или несколько символов в текстовом поле, чтобы отфильтровать список в большом наборе данных.In many apps, you can type one or more characters into a search box to filter a list of records in a large data set. При вводе в списке отображаются только те записи, которые соответствуют заданным условиям поиска.As you type, the list shows only those records that match the search criteria.

Примеры, приведенные в остальной части статьи, — это результаты поиска в списке Customers, содержащие следующие данные:The examples in the rest of this topic show the results of searching a list, named Customers, that contains this data:

Чтобы создать этот источник данных в виде коллекции, создайте элемент управления Кнопка и задайте в качестве значения свойства OnSelect следующую формулу:To create this data source as a collection, create a Button control and set its OnSelect property to this formula:

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"}))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" } ) )

Как показано в этом примере, вы можете вывести список записей в элемент управления Gallery (Коллекция) в нижней части экрана.As in this example, you can show a list of records in a Gallery control at the bottom of a screen. В верхней части экрана можно добавить элемент управления для Text input (Текстовое поле ввода) под названием SearchInput, что позволит пользователям указывать интересующие их записи.Near the top of the screen, you can add a Text input control, named SearchInput, so that users can specify which records interest them.

При вводе символов в текстовом поле SearchInput результаты в коллекции автоматически фильтруются.As the user types characters in SearchInput, the results in the gallery are automatically filtered. В этом случае в коллекции будут отображаться записи, где имена клиентов (не названия компаний) начинаются с последовательности символов, указанных в текстовом поле SearchInput.In this case, the gallery is configured to show records for which the name of the customer (not the name of the company) starts with the sequence of characters in SearchInput. Если пользователь введет в поле поиска co, в коллекции отобразятся следующие результаты:If the user types co in the search box, the gallery shows these results:

Чтобы выполнить фильтрацию результатов по столбцу Name, задайте в качестве значения свойства Items элемента управления "Коллекция" одну из этих формул:To filter based on the Name column, set the Items property of the gallery control to one of these formulas:

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
Filter(Customers, StartsWith(Name, SearchInput.Text))Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Фильтрует источник данных Customers по записям, в которых искомая строка находится в начале столбца Name.Filters the Customers data source for records in which the search string appears at the start of the Name column. При проверке регистр не учитывается.The test is case insensitive. Если пользователь введет в поле поиска co, в коллекции отобразятся следующие результаты: Colleen Jones и Cole Miller.If the user types co in the search box, the gallery shows Colleen Jones and Cole Miller. В этом случае значение Mike Collins не отобразится, так как в столбце Name запись не начинается с искомой строки.The gallery doesn't show Mike Collins because the Name column for that record doesn't start with the search string.
Filter(Customers, SearchInput.Text in Name)Filter( Customers, SearchInput.Text in Name ) Фильтрует источник данных Customers по записям, в которых искомая строка находится в любом положении в столбце Name.Filters the Customers data source for records in which the search string appears anywhere in the Name column. При проверке регистр не учитывается.The test is case insensitive. Если пользователь введет в поле поиска co, в коллекции отобразятся следующие результаты: Colleen Jones, Cole Miller и Mike Collins. Это связано с тем, что записи столбца Name содержат искомую строку (в любом положении).If the user types co in the search box, the gallery shows Colleen Jones, Cole Miller, and Mike Collins because the search string appears somewhere in the Name column of all of those records.
Search(Customers, SearchInput.Text, "Name")Search( Customers, SearchInput.Text, "Name" ) Как и при использовании оператора in, функция Search выполняет поиск соответствий во всех положениях записей в столбце Name.Similar to using the in operator, the Search function searches for a match anywhere within the Name column of each record. Обратите внимание, что имя столбца необходимо заключить в двойные кавычки.Note that you must enclose the column name in double quotation marks.

Вы можете расширить область поиска, добавив столбец Company и Name.You can expand your search to include the Company column as well as the Name column:

ФормулаFormula ОписаниеDescription Возвращаемый результатResult
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text))Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Фильтрует источник данных Customers по записям, в которых записи в столбце Name или Company начинаются со строки поиска (например, co).Filters the Customers data source for records in which either the Name column or the Company column starts with the search string (for example, co). Если функция StartsWith возвращает значение true, оператор || также возвращает значение true.The || operator is true if either StartsWith function is true.
Filter(Customers, SearchInput.Text in Name || SearchInput.Text in Company)Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) Фильтрует источник данных Customers по записям, в которых искомая строка (например, co) находится в любом положении в столбце Name или Company.Filters the Customers data source for records in which either the Name column or the Company column contains the search string (for example, co) anywhere within it.
Search(Customers, SearchInput.Text, "Name", "Company")Search( Customers, SearchInput.Text, "Name", "Company" ) Как и при использовании оператора in, функция Search ищет в источнике данных Customers записи, в которых искомая строка (например, co) находится в любом положении в столбце Name или Company.Similar to using the in operator, the Search function searches the Customers data source for records in which either the Name column or the Company column contains the search string (for example, co) anywhere within it. В отличие от функции Filter, функцию Search проще записывать и читать. Это следует учитывать, если вы хотите указать несколько столбцов и операторов in.The Search function is easier to read and write than Filter if you want to specify multiple columns and multiple in operators. Обратите внимание, что имена столбцов необходимо заключать в двойные кавычки.Note that you must enclose the names of the columns in double quotation marks.