Funções Filter, Search e LookUp no Power Apps

Localiza um ou mais registros em uma tabela.

Descrição

A função Filter localiza registros em uma tabela que atendem a uma fórmula. Use Filter para localizar um conjunto de registros que correspondam a um ou mais critérios e para descartar aqueles sem correspondência.

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

Em ambos os casos, a fórmula é avaliada para cada registro da tabela. Registros que resultam em verdadeiro 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 substring.

Os campos do registro que está sendo processado no momento estão disponíveis na fórmula. Use o operador ThisRecordou simplesmente referencie os campos por nome como faria com qualquer outro valor. O operador Astambém pode ser usado para nomear o registro que está sendo processado, o que pode ajudar a tornar sua fórmula mais fácil de entender e tornar os registros aninhados acessíveis. Para obter mais informações, veja os exemplos abaixo e consulte trabalhando com escopo de registros.

A função Search localiza registros em uma tabela que contenham uma cadeia de caracteres em uma das colunas. A cadeia de caracteres pode ocorrer em qualquer lugar dentro da coluna; por exemplo, se você procurasse "rob" ou "bert", encontraria uma correspondência em uma coluna contendo "Robert". A pesquisa não faz diferenciação entre maiúsculas e minúsculas. Diferente de Filter e LookUp, a função Search usa uma única cadeia de caracteres para correspondência, e não uma fórmula.

As funções Filter e Search retornam uma tabela contendo as mesmas colunas da tabela original e os registros que correspondem aos critérios. A função LookUp retorna apenas o primeiro registro encontrado após aplicar uma fórmula para reduzir o registro a um único valor. Se nenhum registro for encontrado, as funções Filter e Search retornarão uma tabela vazia e LookUp retornará em branco.

Tables são um valor no Power Apps, assim como cadeias de caracteres ou números. Elas podem ser passadas e retornadas para funções. As funções Filter, Search e LookUp não modificam uma tabela. Em vez disso, elas 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 Power Apps delegará o filtro e as operações de classificação para a fonte de dados e navegará pelos resultados sob demanda. Por exemplo, quando você iniciar um aplicativo que mostra um controle de Galeria preenchido com dados, somente o primeiro conjunto de registros será trazido para o dispositivo inicialmente. Conforme o usuário rola, dados adicionais são trazidos a partir da fonte de dados. O resultado de um tempo de início mais rápido para o aplicativo e o acesso a conjuntos muito grandes de dados.

No entanto, a delegação pode não ser sempre possível. As fontes de dados variam sobre quais funções e operadores oferecem suporte à delegação. Se a delegação completa de uma de fórmula não for possível, a criação do ambiente indicará a parte que não pode ser delegada com um aviso. Quando possível, considere alterar a fórmula para evitar as funções e os operadores que não podem ser delegados. A lista de delegação detalha quais fontes de dados e operações podem ser delegadas.

Se a delegação não for possível, o Power Apps exibirá somente um pequeno conjunto de registros para trabalhar localmente. As funções de filtragem e de classificação operarão em um conjunto reduzido de registros. O que estiver disponível na Galeria poderá não ser a história completa, o que pode ser confuso para os usuários.

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

Sintaxe

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

  • Table - obrigatório. Tabela para pesquisa.
  • Fórmula(s) - obrigatório. A fórmula pela qual cada registro da tabela é avaliado. A função retorna todos os registros que resultam em verdadeiro. É 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 pesquisa.
  • SearchString - obrigatório. A cadeia a ser pesquisada. Se estiver em branco ou com uma cadeia vazia, todos os registros serão retornados.
  • Column(s) - obrigatório. Os nomes das colunas em Table para pesquisar. As colunas a serem pesquisadas devem conter 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.

Observação

Nas fontes de dados do Excel e do SharePoint que contêm nomes de colunas com espaços, especifique cada espaço como "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Nome_x0020_da_x0020_Coluna".

LookUp(Table*, Formula [, ReductionFormula ] )

  • Table - obrigatório. Tabela para pesquisa. Na interface do usuário, a sintaxe é mostrada como fonte acima da caixa de função.
  • Formula - obrigatório. A fórmula pela qual cada registro da tabela é avaliado. A função retorna o primeiro registro que resulta em verdadeiro. É 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 seguintes exemplos usam a fonte de dados IceCream:

Fonte de dados Ice Cream

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

Filtrar com colunas de escolha

O exemplo a seguir usa a tabela Conta no Microsoft Dataverse como fonte de dados. Este exemplo mostra como Filtrar a lista de contas com base nos valores de controle da caixa Combinação:

Passo a passo

  1. Abra um aplicativo em branco.

  2. Adicione uma nova tela selecionando a opção Nova Tela.

  3. Na guia Inserir, selecione Galeria e então selecione Vertical.

  4. Na guia Propriedades do painel direito, abra Fonte de dados e então selecione Contas.

  5. (Opcional) Na lista Layout, selecione opções diferentes.

  6. Na guia Inserir, selecione Entrada e então selecione Caixa de combinação. Repita a etapa para adicionar mais dois controles de caixa de combinação.

  7. Para cada controle de caixa de combinação, na guia Propriedades do painel direito, abra Fonte de dados e então selecione Contas. Selecione Editar ao lado da opção Campos e, em seguida, selecione os valores Texto primário e SearchField. O Texto primário deve ser a coluna de opções que você deseja adicionar à caixa de combinação. Repita a etapa para mais dois controles de caixa de combinação.

    Definir valores da caixa de combinação

  8. Agora, selecione controle Galeria e defina a propriedade Itens como a fórmula a seguir:

    Filter(Accounts, 
     'Industry' = ComboBox3.Selected.Industry||IsBlank(ComboBox3.Selected.Industry), 
     'Relationship Type' = ComboBox2.Selected.'Relationship Type'||
     IsBlank(ComboBox2.Selected.'Relationship Type'), 
     'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact'||
     IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
    

    Fonte de dados Contas

Experiência do usuário de pesquisa

Os seguintes exemplos usam a fonte de dados IceCream:

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 estes dados:

Pesquisar nos clientes

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 Gallery na parte inferior da tela. Próximo à parte superior da tela, adicione um controle Text input, chamado SearchInput, para que os usuários possam especificar quais registros os interessam.

Pesquisar um item usando a entrada de pesquisa

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 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:

Pesquisar com começa com

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

Fórmula Descrição Resultado
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Filtra a fonte de dados Customers 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. Filtrar com começar com
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. Filtrar com entrada de pesquisa
Search( Customers, SearchInput.Text, "Name" ) Assim como o operador in, a função Search procura uma correspondência em qualquer lugar da coluna Name de cada registro. É necessário colocar o nome da coluna entre aspas duplas. Pesquisar clientes

Você pode expandir sua pesquisa para incluir as colunas Company e 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. Filtrar clientes começar com
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). Filtrar clientes entrada de pesquisa
Search( Customers, SearchInput.Text, "Name", "Company" ) Assim como o operador in, a função Search 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 Search é mais fácil de ler e gravar do que Filter se quiser especificar várias colunas e vários operadores in. É necessário colocar os nomes das colunas entre aspas duplas.  Pesquisar clientes com entrada de pesquisa