Funções Filter, Search e LookUp
Aplica-se a: Aplicativos Canvas Fluxos de desktop Aplicativos orientados a modelos Power Pages 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 CLI pac power-fx não suportam a função Pesquisar .
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.
Filtrar e Pesquisar retornam uma tabela que contém as mesmas colunas da tabela original e os registros que correspondem aos critérios. 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.
Tabelas são um valor em Power Apps, assim como uma string ou um número. Elas podem ser passadas e retornadas para 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
Filtro(Tabela*, Fórmula1 [, *Fórmula2*, ... ] )
- Tabela - Obrigatório. Tabela para pesquisa.
- Fórmulas - 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.
Pesquisar(Tabela*, SearchString, Coluna1 [, *Coluna2*, ... ] )
- Tabela - 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.
- Colunas - Obrigatório. Os nomes das colunas em Table para pesquisar. Se SearchString estiver dentro dos dados de qualquer uma dessas colunas como uma correspondência parcial, o registro completo será retornado.
Observação
Antes da versão 3.24042 do Power Apps, os nomes das colunas para a função Search eram especificados com uma cadeia de texto usando aspas duplas e, se conectados a um fonte de dados também precisavam ser nomes lógicos. Por exemplo, o nome lógico "cr43e_name" entre aspas duplas foi usado em vez do nome de exibição Name sem aspas. Para fontes de dados do SharePoint e do Excel que contêm nomes de colunas com espaços, cada espaço foi especificado com "_x0020_", por exemplo "Nome da coluna" como "Column_x0020_Name". Após esta versão, todos os aplicativos foram atualizados automaticamente para a nova sintaxe descrita neste artigo.
LookUp(Tabela*, Fórmula [, Fórmula de Redução ] )
- Tabela - Obrigatório. Tabela para pesquisa. Na interface do usuário, a sintaxe é mostrada como origem acima da caixa de função.
- Fórmula - 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.
- Fórmula de redução - 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:
Fórmula | Description | Result |
---|---|---|
Filtro(Sorvete, OnOrder > 0) | Retorna registros em que OnOrder é maior que zero. | |
Filtro(Sorvete, Quantidade + OnOrder > 225) | Retorna registros em que a soma das colunas Quantidade e OnOrder é maior que 225. | |
Filtro(Sorvete, "chocolate" em Lower(Sabor)) | Retorna registros em que a palavra "chocolate" aparece no nome Sabor, independentemente de letras maiúsculas ou minúsculas. | |
Filtro(Sorvete, Quantidade < 10 && Sob Encomenda < 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. | |
Pesquisar(Sorvete, "chocolate", Sabor) | Retorna registros em que a cadeia de caracteres "choc" aparece no nome Sabor, independentemente de letras maiúsculas ou minúsculas. | |
Pesquisar(Sorvete, "", Sabor) | Como o termo de pesquisa está vazio, todos os registros são retornados. | |
LookUp(Sorvete, Sabor = "Chocolate", Quantidade) | Procura um registro com Sabor igual a "Chocolate"; existe um. Para o primeiro registro encontrado, retorna a Quantidade desse registro. | 100 |
LookUp(Sorvete, Quantidade > 150, Quantidade + 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(Sorvete, Sabor = "Pistache", OnOrder) | Procura um registro com Sabor igual a "Pistachio", que não existe. Como nenhum é encontrado, LookUp retorna em branco. | em branco |
LookUp(Sorvete, Sabor = "Baunilha") | 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
Abra um aplicativo em branco.
Adicione uma nova tela selecionando a opção Nova Tela.
Na guia Inserir, selecione Gallery e então selecione Vertical.
Na guia Propriedades do painel direito, abra Fonte de dados e então selecione Contas.
(Opcional) Na lista Layout, selecione opções diferentes.
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.
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.
Agora, selecione controle Gallery e defina a propriedade Items como a fórmula a seguir:
Filter(Accounts, 'Industry' = ComboBox3.Selected.Industry Or IsBlank(ComboBox3.Selected.Industry), 'Relationship Type' = ComboBox2.Selected.'Relationship Type' Or IsBlank(ComboBox2.Selected.'Relationship Type'), 'Preferred Method of Contact' = ComboBox1.Selected.'Preferred Method of Contact' Or IsBlank(ComboBox1.Selected.'Preferred Method of Contact'))
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 artigo mostram os resultados da pesquisa em uma lista chamada Clientes, que contém estes 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(Clientes, Tabela({ Nome: "Fred Garcia", Empresa: "Northwind Traders" }, { Nome: "Cole Miller", Empresa: "Contoso" }, { Nome: "Glenda Johnson", Empresa: "Contoso" }, { Nome: "Mike Collins", Empresa: "Adventure Works" }, { Nome: "Colleen Jones", Empresa: "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.
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:
Para filtrar com base na coluna Nome, defina a propriedade Items do controle Gallery como uma destas fórmulas:
Fórmula | Descrição | Resultado |
---|---|---|
Filtro(Clientes, ComeçaCom(Nome, SearchInput.Texto) ) | 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. | |
Filtro(Clientes, SearchInput.Text em Nome) | 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. | |
Pesquisar(Clientes, SearchInput.Text, Nome) | 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. |
Você pode expandir sua pesquisa para incluir as colunas Company e Name:
Fórmula | Descrição | Resultado |
---|---|---|
Filtro(Clientes, ComeçaCom(Nome, SearchInput.Texto) || ComeçaCom(Empresa, SearchInput.Texto) ) | 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(Clientes, SearchInput.Text em Nome || SearchInput.Text em Empresa) | 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). | |
Pesquisar(Clientes, SearchInput.Text, Nome, Empresa) | 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. |