Localiza um ou mais registros em uma tabela.

Descrição

A função Filtrar localiza registros em uma tabela que atendem a uma fórmula. Use Filtrar para localizar um conjunto de registros que correspondem a um ou mais critérios e descartar aqueles que não correspondem.

A função Pesquisa localiza o primeiro registro em uma tabela que corresponda a uma fórmula. Use a função Pesquisa para localizar um único registro que corresponda a um ou mais critérios.

Para ambos os casos, a fórmula é avaliada para cada registro da tabela. Registros que resultam em true são incluídos no resultado. Além de operadores de fórmula normal, você pode usar os operadores in e exactin para correspondências de subsequências.

Os campos do registro que estão sendo atualmente processados estão disponíveis dentro da fórmula. Basta referenciá-los por nome como você faria com qualquer outro valor. Também é possível fazer referência a propriedades de controle e a outros valores de todo o seu aplicativo. Para obter mais detalhes, consulte os exemplos abaixo e trabalhando com escopo de registro.

A função Pesquisar localiza registros em uma tabela que contenham uma cadeia de caracteres em uma de suas colunas. A cadeia de caracteres pode ocorrer em qualquer lugar dentro da coluna; Por exemplo, procurar por "rob" ou "bert" encontraria uma correspondência em uma coluna que contém "Robert". A pesquisa diferencia maiúsculas de minúsculas. Ao contrário de Filtrar e Pesquisa, a função Pesquisar usa uma única cadeia de caracteres para corresponder em vez de uma fórmula.

As funções Filtrar e Pesquisar retornam uma tabela que contém as mesmas colunas da tabela original e os registros que correspondem aos critérios. A função Pesquisa retorna apenas o primeiro registro encontrado após a aplicação de uma fórmula para reduzir o registro a um único valor. Se nenhum registro for encontrado, as funções Filtrar e Pesquisar retornarão uma tabela vazia, e Pesquisa retorna em branco.

Tabelas são um valor no PowerApps, assim como cadeias de caracteres ou números. Elas podem ser passadas e retornadas para funções. As funções Filtrar, Pesquisar e Pesquisa não modificam uma tabela. Em vez disso, eles consideram uma tabela como um argumento e retornam uma tabela, um registro ou um único valor dele. Consulte Trabalhando com tabelas para obter mais detalhes.

Delegação

Quando possível, o PowerApps delegará operações de filtragem e classificação à fonte de dados e à página por meio dos resultados sob demanda. Por exemplo, quando você inicia um aplicativo que mostra um controle Galeria cheio de dados, apenas o primeiro conjunto de registros será inicialmente levado ao dispositivo. Conforme o usuário rola, mais dados são desativados da fonte de dados. O resultado é uma hora de início mais rápida para o aplicativo e o acesso a grandes conjuntos de dados.

No entanto, a delegação talvez nem sempre seja possível. As fontes de dados variam quanto a quais funções e operadores elas dão suporte com a delegação. Se a delegação completa de uma fórmula não for possível, o ambiente de criação marcará a parte que não puder ser delegada com um aviso. Quando possível, considere alterar a fórmula para evitar funções e operadores que não podem ser delegados. A lista de delegação detalha quais fontes de dados e operações podem ser delegados.

Se a delegação não for possível, o PowerApps extrairá um pequeno conjunto de registros para trabalhar no local. As funções de filtro e de classificação operarão em um conjunto reduzido de registros. O que está disponível na Galeria talvez não seja a história completa, que pode ser confusa para os usuários.

Consulte a visão geral de delegação para obter mais informações.

Sintaxe

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

  • Table – Obrigatório. Tabela para pesquisar.
  • Formula(s) – Obrigatório. A fórmula com a qual cada registro da tabela é avaliado. A função retorna todos os registros que resultam em true. É possível referenciar colunas dentro da tabela. Se você fornecer mais de uma fórmula, os resultados de todas as fórmulas serão combinados com a função And.

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

  • Table – Obrigatório. Tabela para pesquisar.
  • SearchString – Obrigatório. A cadeia de caracteres a ser pesquisada. Se em branco ou uma cadeia de caracteres vazia, todos os registros serão retornados.
  • Column(s) – Obrigatório. Os nomes das colunas na tabela para pesquisar. As colunas a serem pesquisadas devem conter o texto. Nomes de coluna devem ser cadeias de caracteres e estar entre aspas duplas. No entanto, os nomes de coluna devem ser estáticos e não podem ser calculados com uma fórmula. Se SearchString estiver dentro dos dados de qualquer uma dessas colunas como uma correspondência parcial, o registro completo será retornado.

LookUp( Table, Formula [, ReductionFormula ] )

  • Table – Obrigatório. Tabela para pesquisar. Na interface do usuário, a sintaxe é mostrada como fonte acima da caixa de função.
  • Formula – Obrigatório. A fórmula com a qual cada registro da tabela é avaliado. A função retorna o primeiro registro que resulta em true. É possível referenciar colunas dentro da tabela. Na interface do usuário, a sintaxe é mostrada como condição acima da caixa de função.
  • ReductionFormula – Opcional. Essa fórmula é avaliada em um registro que foi encontrado e, depois, reduz o registro a um único valor. É possível referenciar colunas dentro da tabela. Se você não usar esse parâmetro, a função retornará o registro completo da tabela. Na interface do usuário, a sintaxe é mostrada como resultado acima da caixa de função.

Exemplos

Os exemplos a seguir usam a fonte de dados IceCream:

Fórmula Descrição Resultado
Filter( IceCream, OnOrder > 0 ) Retorna registros em que OnOrder é maior que zero.
Filter( IceCream, Quantity + OnOrder > 225 ) Retorna registros em que a soma das colunas Quantity e OnOrder é maior que 225.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Retorna registros onde a palavra "chocolate" aparece no nome Flavor, independentemente de letras maiúsculas ou minúsculas.
Filter( IceCream, Quantity < 10 && OnOrder < 20 ) Retorna registros em que Quantity é menor que 10 e OnOrder é menor que 20. Nenhum registro corresponde a esses critérios, portanto, uma tabela vazia é retornada.
Search( IceCream, "choc", "Flavor" ) Retorna registros em que a cadeia de caracteres "choc" aparece no nome Flavor, independentemente de letras maiúsculas ou minúsculas.
Search( IceCream, "", "Flavor" ) Como o termo de pesquisa está vazio, todos os registros são retornados.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Procura um registro com Flavor igual a "Chocolate", que há um. Para o primeiro registro for encontrado, retorna a Quantity desse registro. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Procura um registro com Quantity maior que 100 e há vários. Para o primeiro registro encontrado, o que é Flavor "Vanilla", retorna a soma das colunas Quantity e OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Procura um registro com Flavor igual a "Pistachio", que não há nenhum. Como nenhum foi encontrado, LookUp retorna em branco. em branco
LookUp( IceCream, Flavor = "Vanilla" ) Procura um registro com Flavor igual a "Vanilla", que há um. Como nenhuma fórmula de redução foi fornecida, todo o registro é retornado. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Experiência do usuário de pesquisa

Em muitos aplicativos, você pode digitar um ou mais caracteres em uma caixa de pesquisa para filtrar uma lista de registros de um grande conjunto de dados. Conforme você digita, a lista mostra apenas os registros que correspondem aos critérios da pesquisa.

Os exemplos no restante deste tópico mostram os resultados da pesquisa em uma lista chamada Clientes que contém esses dados:

Para criar essa fonte de dados como uma coleção, crie um controle Button e defina sua propriedade OnSelect como esta fórmula:

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

Assim como neste exemplo, você pode mostrar uma lista de registros em um Controle de galeria na parte inferior da tela. Próximo à parte superior da tela, adicione um controle Entrada de texto, chamado SearchInput, para que os usuários possam especificar quais registros os interessam.

Conforme o usuário digita os caracteres em SearchInput, os resultados da galeria são filtrados automaticamente. Nesse caso, a galeria está configurada para mostrar os registros dos quais o nome do cliente (não o nome da empresa) começa com a sequência de caracteres em SearchInput. Se o usuário digitar co na caixa de pesquisa, a galeria mostrará estes resultados:

Para filtrar com base na coluna Name, defina a propriedade Items do controle da galeria como uma destas fórmulas:

Fórmula Descrição Resultado
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Filtra a fonte de dados Clientes em busca de registros nos quais a cadeia de caracteres de pesquisa apareça no início da coluna Name. O teste diferencia maiúsculas de minúsculas. Se o usuário digitar co na caixa de pesquisa, a galeria mostrará Colleen Jones e Cole Miller. A Galeria não mostra Mike Collins, porque a coluna Name desse registro não começa com a cadeia de caracteres de pesquisa.
Filter( Customers, SearchInput.Text in Name ) Filtra a fonte de dados Customers em busca de registros nos quais a cadeia de caracteres de pesquisa apareça em qualquer lugar da coluna Name. O teste diferencia maiúsculas de minúsculas. Se o usuário digitar co na caixa de pesquisa, a galeria mostrará Colleen Jones, Cole Miller e Mike Collins, pois a cadeia de caracteres de pesquisa aparecerá em algum lugar da coluna Name de todos os registros.
Search( Customers, SearchInput.Text, "Name" ) Assim como o operador in, a função Pesquisar procura uma correspondência em qualquer lugar da coluna Name de cada registro. Observe que você deve colocar o nome da coluna entre aspas duplas.

Você pode expandir sua pesquisa para incluir a coluna Company, bem como a coluna Name:

Fórmula Descrição Resultado
Filter( Customers, StartsWith( Name, SearchInput.Text ) || StartsWith( Company, SearchInput.Text ) ) Filtra a fonte de dados Customers em busca de registros nos quais a coluna Name ou a coluna Company comece com a cadeia de caracteres de pesquisa (por exemplo, co). O operador || será true se a função StartsWith for true.
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) Filtra a fonte de dados Customers em busca de registros nos quais a coluna Name ou a coluna Company contenham a cadeia de caracteres de pesquisa (por exemplo, co em qualquer lugar).
Search( Customers, SearchInput.Text, "Name", "Company" ) Assim como o operador in, a função Pesquisar pesquisa na fonte de dados Customers por registros nos quais a coluna Name ou a coluna Company contém a cadeia de caracteres de pesquisa (por exemplo, co) em qualquer lugar. A função Pesquisar é mais fácil de ler e gravar do que Filtrar se quiser especificar várias colunas e vários operadores in. Observe que você deve colocar os nomes de coluna entre aspas duplas.