Funções Filtrar, Procurar e Pesquisar no PowerAppsFilter, Search, and LookUp functions in PowerApps

Localiza um ou mais registos numa tabela.Finds one or more records in a table.

DescriçãoDescription

A função Filtrar localiza registos numa tabela que satisfazem uma fórmula.The Filter function finds records in a table that satisfy a formula. Utilize Filtrar para localizar um conjunto de registos que corresponde a um ou mais critérios e para eliminar os que não são.Use Filter to find a set of records that match one or more criteria and to discard those that don't.

A função Pesquisar procura o primeiro registo numa tabela que satisfaz uma fórmula.The LookUp function finds the first record in a table that satisfies a formula. Utilize Pesquisar para procurar um registo único que corresponda a um ou mais critérios.Use LookUp to find a single record that matches one or more criteria.

Para ambos, é avaliada a fórmula para cada registo da tabela.For both, the formula is evaluated for each record of the table. Os registos que resultam numa verdadeiro estão incluídos no resultado.Records that result in true are included in the result. Além da fórmula normal operadores, pode utilizar os operadores in e exactin para as correspondências de subcadeia.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.

A função Procurar localiza registos numa tabela que contém uma cadeia numa das respetivas colunas.The Search function finds records in a table that contain a string in one of their columns. A cadeia pode ocorrer em qualquer lugar dentro da coluna; por exemplo, se procurar "rob" ou "bert" é apresentada uma correspondência numa coluna que contém "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". A pesquisa não é sensível a maiúsculas e minúsculas.Searching is case-insensitive. Ao contrário de Filtrar e Pesquisar, a função Procurar utiliza uma cadeia única em vez de uma fórmula.Unlike Filter and LookUp, the Search function uses a single string to match instead of a formula.

As opções Filtrar e Procurar devolvem uma tabela que contém as mesmas colunas da tabela original e os registos que correspondem aos critérios.Filter and Search return a table that contains the same columns as the original table and the records that match the criteria. A opção Pesquisar devolve apenas o primeiro registo encontrado, depois de aplicar uma fórmula para reduzir o registo para um valor único.LookUp returns only the first record found, after applying a formula to reduce the record to a single value. Não se for encontrado qualquer registo, Filtrar e Procurar devolvem uma tabela vazia e Pesquisar devolvem branco.If no records are found, Filter and Search return an empty table, and LookUp returns blank.

As Tabelas são um valor no PowerApps, tal como uma cadeia ou um número.Tables are a value in PowerApps, just like a string or number. Podem ser transmitidos a funções e devolvidos das mesmas.They can be passed to and returned from functions. As opções Filtrar, Procurar e Pesquisar não modificam uma tabela.Filter, Search, and LookUp don't modify a table. Em vez disso, assumem uma tabela como um argumento e devolvem uma tabela, um registo ou um valor único a partir do mesmo.Instead, they take a table as an argument and return a table, a record, or a single value from it. Consulte working with tables (trabalhar com tabelas) para obter mais detalhes.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.

SintaxeSyntax

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

  • Tabela - Necessário.Table - Required. Tabela a pesquisar.Table to search.
  • Fórmula(s) - Necessário.Formula(s) - Required. A fórmula é avaliada para cada registo da tabela.The formula by which each record of the table is evaluated. A função devolve todos os registos que resultam em verdadeiro.The function returns all records that result in true. Pode referenciar colunas na tabela.You can reference columns within the table. Se fornecer mais de uma fórmula, os resultados de todas as fórmulas são combinados com a função E.If you supply more than one formula, the results of all formulas are combined with the And function.

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

  • Tabela - Necessário.Table - Required. Tabela a pesquisar.Table to search.
  • SearchString - Necessário.SearchString - Required. A cadeia a procurar.The string to search for. Se em branco ou uma cadeia vazia, todos os registos são devolvidos.If blank or an empty string, all records are returned.
  • Coluna(s) - Necessário.Column(s) - Required. Os nomes das colunas na Tabela a procurar.The names of columns within Table to search. As colunas a pesquisar devem conter texto.Columns to search must contain text. Os nomes das colunas devem ter cadeias e colocadas entre aspas duplas.Column names must be strings and enclosed in double quotes. No entanto, os nomes das colunas devem ser estáticos e não podem ser calculadas com uma fórmula.However, the column names must be static and cannot be calculated with a formula. Se SearchString for encontrado nos dados de qualquer uma destas colunas como correspondência parcial, o registo completo vai ser devolvido.If SearchString is found within the data of any of these columns as a partial match, the full record will be returned.

Nota: para origens de dados do SharePoint e do Excel que contêm nomes de coluna com espaços, especifique cada espaço como "_x0020_".Note: For SharePoint and Excel data sources that contain column names with spaces, specify each space as "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Column_x0020_Name".For example, specify "Column Name" as "Column_x0020_Name".

Pesquisar( Tabela, Fórmula [, ReductionFormula ] )LookUp( Table, Formula [, ReductionFormula ] )

  • Tabela - Necessário.Table - Required. Tabela a pesquisar.Table to search. Na IU, a sintaxe é mostrada como origem acima da caixa de função.In the UI, the syntax is shown as source above the function box.
  • Fórmula - Necessário.Formula - Required. A fórmula é avaliada para cada registo da tabela.The formula by which each record of the table is evaluated. A função devolve o primeiro registo que resulte em verdadeiro.The function returns the first record that results in true. Pode referenciar colunas na tabela.You can reference columns within the table. Na IU, a sintaxe é mostrada como condição acima da caixa de função.In the UI, the syntax is shown as condition above the function box.
  • ReductionFormula - opcional.ReductionFormula - Optional. Esta fórmula é avaliada através do registo que foi encontrado e, em seguida, reduz o registo para um valor único.This formula is evaluated over the record that was found, and then reduces the record to a single value. Pode referenciar colunas na tabela.You can reference columns within the table. Se não utilizar este parâmetro, a função devolve o registo completo da tabela.If you don't use this parameter, the function returns the full record from the table. Na IU, a sintaxe é mostrada como resultado acima da caixa de função.In the UI, the syntax is shown as result above the function box.

ExemplosExamples

Os exemplos seguintes utilizam a origem de dados IceCream:The following examples use the IceCream data source:

FórmulaFormula DescriçãoDescription ResultadoResult
Filtrar( IceCream, OnOrder > 0 )Filter( IceCream, OnOrder > 0 ) Devolve os registos, sendo que OnOrder é superior a zero.Returns records where OnOrder is greater than zero.
Filter( IceCream, Quantidade + OnOrder > 225 )Filter( IceCream, Quantity + OnOrder > 225 ) Devolve os registos em que a soma das colunas Quantidade e OnOrder é superior a 225.Returns records where the sum of Quantity and OnOrder columns is greater than 225.
Filter( IceCream, "chocolate" em Lower( Sabor ) )Filter( IceCream, "chocolate" in Lower( Flavor ) ) Devolve registos onde a palavra "chocolate" aparece no nome Sabor, independentemente de terem letras em maiúsculas ou minúsculas.Returns records where the word "chocolate" appears in the Flavor name, independent of uppercase or lowercase letters.
Filter( IceCream, Quantidade < 10 && OnOrder < 20 )Filter( IceCream, Quantity < 10 && OnOrder < 20 ) Devolve registos onde a Quantidade é inferior a 10 e OnOrder é inferior a 20.Returns records where the Quantity is less than 10 and OnOrder is less than 20. Não existem registos que correspondam a estes critérios sendo devolvida uma tabela vazia.No records match these criteria, so an empty table is returned.
Procurar( IceCream, "choc", "Sabor" )Search( IceCream, "choc", "Flavor" ) Devolve registos onde a palavra "choc" aparece no nome Sabor, independentemente de terem letras em maiúsculas ou minúsculas.Returns records where the string "choc" appears in the Flavor name, independent of uppercase or lowercase letters.
Procurar( IceCream, "", "Sabor" )Search( IceCream, "", "Flavor" ) Uma vez que o termo de pesquisa está vazio, todos os registos são devolvidos.Because the search term is empty, all records are returned.
LookUp( IceCream, Sabor = "Chocolate", Quantidade)LookUp( IceCream, Flavor = "Chocolate", Quantity ) Procura um registo com Sabor igual a "Chocolate", onde existe um.Searches for a record with Flavor equal to "Chocolate", of which there is one. Para o primeiro registo encontrado, devolve a Quantidade desse registo.For the first record that's found, returns the Quantity of that record. 100100
LookUp( IceCream, Quantity > 150, Quantidade + OnOrder )LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Procura um registo com Quantidade superior a 100, dos quais existem vários.Searches for a record with Quantity greater than 100, of which there are multiple. Para o primeiro registo encontrado, ou seja, "Baunilha" Sabor, devolve a soma das colunas Quantidade e OnOrder.For the first record that's found, which is "Vanilla" Flavor, returns the sum of Quantity and OnOrder columns. 250250
LookUp( IceCream, Sabor = "Pistachio", OnOrder )LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Procura um registo com Sabor igual a "Pistachio", em relação ao qual não há nenhum.Searches for a record with Flavor equal to "Pistachio", of which there are none. Porque não foi encontrado nenhum, Pesquisar devolve em branco.Because none were found, Lookup returns blank. em brancoblank
LookUp( IceCream, Sabor = "Baunilha" )LookUp( IceCream, Flavor = "Vanilla" ) Procura um registo com Sabor igual a "Baunilha", onde existe um.Searches for a record with Flavor equal to "Vanilla", of which there is one. Uma vez que não foi fornecida nenhum fórmula de redução, todo o registo é devolvido.Since no reduction formula was supplied, the entire record is returned. { Sabor: "Baunilha", Quantidade: 200, OnOrder: 75 }{ Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Experiência de utilizador de pesquisaSearch user experience

Em muitas aplicações, pode escrever um ou mais carateres numa caixa de pesquisa para filtrar uma lista de registos num conjunto de dados grande.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. À medida que escreve, a lista mostra apenas esses registos correspondentes aos critérios da pesquisa.As you type, the list shows only those records that match the search criteria.

Os exemplos no resto deste tópico mostram os resultados da pesquisa de uma lista, com o nome Clientes que contém os seguintes dados:The examples in the rest of this topic show the results of searching a list, named Customers, that contains this data:

Para criar esta origem de dados como uma coleção, crie um controlo de Botão e defina a respetiva propriedade OnSelect com esta fórmula:To create this data source as a collection, create a Button control and set its OnSelect property to this formula:

ClearCollect( os clientes, Tabela( { nome: "Pedro Garcia", da empresa: "Northwind Traders" }, { Nome: "Cole Santos", empresa: "Contoso" }, { nome: "Glenda Johnson", empresa: "Contoso" }, { nome: "Mike Collins", da empresa: "Adventure Works" }, { nome: "Colleen Jones", da empresa: "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" } ) )

Tal como neste exemplo, pode apresentar uma lista de registos num controlo de Galeria na parte inferior de um ecrã.As in this example, you can show a list of records in a Gallery control at the bottom of a screen. Junto à parte superior do ecrã, pode adicionar um controlo de Entrada de texto, denominado SearchInput, para que os utilizadores possam especificar os registos que lhe interessam.Near the top of the screen, you can add a Text input control, named SearchInput, so that users can specify which records interest them.

À medida que o utilizador escreve carateres no SearchInput, os resultados na galeria são filtrados automaticamente.As the user types characters in SearchInput, the results in the gallery are automatically filtered. Neste caso, a galeria é configurada para mostrar registos nos quais o nome do cliente (não o nome da empresa) começa com a sequência de carateres no 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. Se o utilizador escrever co na caixa de pesquisa, a galeria apresenta os seguintes resultados:If the user types co in the search box, the gallery shows these results:

Para filtrar com base na coluna Nome, defina a propriedade Itens do controlo da galeria para uma destas fórmulas:To filter based on the Name column, set the Items property of the gallery control to one of these formulas:

FórmulaFormula DescriçãoDescription ResultadoResult
Filter( Customers, StartsWith( Name, SearchInput.Text ) )Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Filtra as origens de dados dos Clientes nos registos em que a cadeia de pesquisa aparece no início da coluna Nome.Filters the Customers data source for records in which the search string appears at the start of the Name column. O teste é sensível a maiúsculas e minúsculas.The test is case insensitive. Se o utilizador escrever co na caixa de pesquisa, a galeria mostra Carlos João e Cláudia Mendes.If the user types co in the search box, the gallery shows Colleen Jones and Cole Miller. A galeria não mostra Miguel Costa porque a coluna Nome desse registo não começa com a cadeia de pesquisa.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 ) Filtra as origens de dados dos Clientes nos registos em que a cadeia de pesquisa aparece em qualquer parte da coluna Nome.Filters the Customers data source for records in which the search string appears anywhere in the Name column. O teste é sensível a maiúsculas e minúsculas.The test is case insensitive. Se o utilizador escrever co na caixa de pesquisa, a galeria mostra Carlos João, Cláudia Mendes, e Miguel Costa porque a cadeia de pesquisa aparece algures na coluna Nome de todos esses registos.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( Clientes, SearchInput.Text, "Nome" )Search( Customers, SearchInput.Text, "Name" ) Semelhante à utilização do operador in, a função Search procura uma correspondência em qualquer parte da coluna Nome de cada registo.Similar to using the in operator, the Search function searches for a match anywhere within the Name column of each record. Tenha em atenção que tem de incluir o nome da coluna entre aspas.Note that you must enclose the column name in double quotation marks.

Pode expandir a pesquisa para incluir a coluna Empresa, bem como a coluna Nome:You can expand your search to include the Company column as well as the Name column:

FórmulaFormula DescriçãoDescription ResultadoResult
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) )Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Filtra as origens de dados de Clientes nos registos em que a coluna Nome ou a coluna Empresa começa com a cadeia de pesquisa (por exemplo, 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). O operador || é verdadeiro se a função StartsWith for 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 ) Filtra as origens de dados de Clientes nos registos em que a coluna Nome ou a coluna Empresa contém a cadeia de pesquisa (por exemplo, co) em qualquer parte na mesma.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( Clientes, SearchInput.Text, "Nome", "Empresa")Search( Customers, SearchInput.Text, "Name", "Company" ) Semelhante à utilização do operador in, a função Procurar procura a origem de dados Clientes para registos em que a coluna Nome ou a coluna Empresa contém a cadeia de pesquisa (por exemplo, co) em qualquer parte na mesma.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. A função Search é mais fácil de ler e escrever do que Filtrar se quiser especificar várias colunas e vários operadores in.The Search function is easier to read and write than Filter if you want to specify multiple columns and multiple in operators. Tenha em atenção que tem de incluir os nomes das colunas entre aspas.Note that you must enclose the names of the columns in double quotation marks.