Funções Filter, Search e LookUp

Aplica-se a: Aplicativos de tela Fluxos da área de trabalho Aplicativos baseados em modelo Power Platform CLI

Localiza um ou mais registros em uma tabela.

Assista a este vídeo para aprender a usar as funções Filter, Search e LookUp:

Observação

Os comandos pac power-fx da CLI do PAC não oferecem suporte à função Search.

Description

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 ThisRecord ou 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 como trabalhar 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.
  • Formula(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.

Nota

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

Fonte de dados Ice Cream.

Fórmula Description Result
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. Filtrar 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 selecionados do controle Combo box:

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 Gallery 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 Gallery e defina a propriedade Items 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 Accounts.

Experiência do usuário de pesquisa

Os seguintes exemplos usam a fonte de dadosIceCream:

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 em 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çam 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 entrada de pesquisa de clientes.
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.