Funções Filter, Search e LookUp

Aplica-se a: Canvas apps Fluxos de área de trabalho CLI de aplicativos Power Pages Power Platform orientados por modelo

Localiza um ou mais registos numa tabela.

Assista a este vídeo para aprender a usar as funções Filtrar, **Search e Procura:

Nota

Os comandos PAC CLI pac power-fx não suportam a função Pesquisar .

Descrição

A função Filter localiza registos numa tabela que satisfazem uma fórmula. Utilize Filtrar para localizar um conjunto de registos que corresponde a um ou mais critérios e para eliminar os registos que não são.

A função LookUp procura o primeiro registo numa tabela que satisfaz uma fórmula. Utilize LookUp para procurar um registo único que corresponda a um ou mais critérios.

Para ambos, é avaliada a fórmula para cada registo da tabela. Os registos que resultam em true estão incluídos no resultado. Além da fórmula normal operadores, pode utilizar os operadores in e exactin para as correspondências de subcadeia.

Os atuais campos do registo em processamento estão disponíveis na fórmula. Utilize o operador ThisRecord ou simplesmente campos de referência pelo nome, como com qualquer outro valor. O operador As também pode ser usado para nomear o registo que está a ser processado, o que pode ajudar a tornar a sua fórmula mais fácil de compreender e tornar os registos aninhados acessíveis. Para mais informações, consulte os exemplos abaixo e trabalhar com o âmbito de registo.

A função Search localiza registos numa tabela que contém uma cadeia numa das respetivas colunas. A cadeia poderá ocorrer em qualquer lugar dentro da coluna; por exemplo, se procurar "rob" ou "bert" é apresentada uma correspondência numa coluna que contém "Robert". A pesquisa não é sensível a maiúsculas e minúsculas. Ao contrário de Filter e LookUp, a função Search utiliza uma cadeia única em vez de uma fórmula.

Filtrar e Pesquisar retornam uma tabela que contém as mesmas colunas que a tabela original e os registros que correspondem aos critérios. A Pesquisa retorna apenas o primeiro registro encontrado, depois de aplicar uma fórmula para reduzir o registro a um único valor. Não se for encontrado qualquer registo, Filter e Search devolvem uma tabela vazia e LookUp devolve blank.

As tabelas são um valor em Power Apps, assim como uma cadeia de caracteres ou número. Podem ser transmitidos a funções e devolvidos das mesmas. Filtrar, Pesquisar e Pesquisar não modificam uma tabela. Em vez disso, assumem uma tabela como um argumento e devolvem uma tabela, um registo ou um valor único a partir do mesmo. Consulte trabalhar com tabelas para obter mais detalhes.

Delegação

Sempre que possível, o Power Apps delegará operações de ordenação e filtro para a origem de dados e página através dos resultados a pedido. Por exemplo, quando inicia uma aplicação que mostra um controlo de Galeria preenchido com dados, apenas o primeiro conjunto de registos será colocado inicialmente no dispositivo. Quando o utilizador desloca, os dados adicionais são desativados da origem de dados. O resultado é uma data de início mais rápida para a aplicação e acesso a conjuntos de dados muito grandes.

No entanto, a delegação nem sempre é possível. As origens de dados dependem das funções e operadores que suportam com a delegação. Se não for possível a delegação completa de uma fórmula, o ambiente de criação sinalizará a parte que não pode ser delegada com um aviso. Sempre que possível, considere alterar a fórmula para evitar funções e operadores que não podem ser delegados. A lista de delegação especifica as origens de dados e operações que podem ser delegadas.

Se a delegação não for possível, o Power Apps irá suspender apenas um pequeno conjunto de registos para trabalhar localmente. As funções de filtro e ordenação funcionarão num conjunto reduzido de registos. O que está disponível na Galeria poderá não ser o cenário completo, o que pode ser confuso para os utilizadores.

Consulte a descrição geral da delegação para mais informações.

Sintaxe

Filtro(Tabela*, Formula1 [, *Formula2*, ... ] )

  • Tabela - Obrigatório. Tabela a pesquisar.
  • Fórmulas - Obrigatório. A fórmula é avaliada para cada registo da tabela. A função devolve todos os registos que resultam em verdadeiro. Pode referenciar colunas na tabela. Se fornecer mais de uma fórmula, os resultados de todas as fórmulas são combinados com a função And.

Pesquisa(Tabela*, SearchString,Coluna1 [, *Coluna2*, ... ] )

  • Tabela - Obrigatório. Tabela a pesquisar.
  • SearchString - Obrigatório. A cadeia a procurar. Se blank ou uma cadeia vazia, todos os registos são devolvidos.
  • Colunas - Obrigatório. Os nomes das colunas na Tabela a procurar. Se SearchString for encontrado nos dados de qualquer uma destas colunas como correspondência parcial, o registo completo vai ser devolvido.

Nota

Antes da versão 3.24042 do Power Apps, os nomes das colunas para a função Pesquisar eram especificados com uma cadeia de texto com aspas duplas e, se estivessem ligados a uma origem de dados também precisavam de ser nomes lógicos. Por exemplo, foi utilizado o nome lógico "cr43e_name" com aspas em vez do nome a apresentar Nome sem aspas. Para as origens 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, todas as aplicações foram atualizadas automaticamente para a nova sintaxe descrita neste artigo.

LookUp(Tabela*, Fórmula [, ReduçãoFórmula ] )

  • Tabela - Obrigatório. Tabela a pesquisar. Na IU, a sintaxe é mostrada como source acima da caixa de função.
  • Fórmula - Obrigatório. A fórmula é avaliada para cada registo da tabela. A função devolve o primeiro registo que resulte em true. Pode referenciar colunas na tabela. Na IU, a sintaxe é mostrada como condition acima da caixa de função.
  • ReductionFormula - Opcional. Esta fórmula é avaliada através do registo que foi encontrado e, em seguida, reduz o registo para um valor único. Pode referenciar colunas na tabela. Se não utilizar este parâmetro, a função devolve o registo completo da tabela. Na IU, a sintaxe é mostrada como result acima da caixa de função.

Exemplos

Os exemplos seguintes utilizam a origem de dadosGelado:

Origem de dados Ice cream.

Fórmula Descrição Resultado
Filtro (Sorvete, OnOrder > 0) Devolve os registos, sendo que OnOrder é superior a zero. Filtrar pela ordem.
Filtro (Sorvete, Quantidade + OnOrder > 225) Devolve os registos em que a soma das colunas Quantidade e OnOrder é superior a 225. Filtrar quantidade e ordem.
Filtro(Sorvete, "chocolate" em Inferior(Sabor)) Devolve registos onde a palavra "chocolate" aparece no nome Flavor, independentemente de terem letras em maiúsculas ou minúsculas. Filtrar por minúsculas.
Filtro (Sorvete, Quantidade < 10 && OnOrder < 20) Devolve registos onde a Quantidade é inferior a 10 e OnOrder é inferior a 20. Não existem registos que correspondam a estes critérios sendo devolvida uma tabela vazia. Filtrar por quantidade.
Pesquisa (Sorvete, "choc", Sabor) Devolve registos onde a palavra "choc" aparece no nome Flavor, independentemente de terem letras em maiúsculas ou minúsculas. Itens de Pesquisa.
Pesquisa(Sorvete, "", Sabor) Uma vez que o termo de pesquisa está vazio, todos os registos são devolvidos. Procurar todos os itens.
LookUp(Sorvete, Sabor = "Chocolate", Quantidade) Procura um registo com Flavor igual a "Chocolate", onde existe um. Para o primeiro registo encontrado, devolve a Quantidade desse registo. 100
LookUp(Sorvete, Quantidade > 150, Quantidade + OnOrder) Procura um registo com Quantidade superior a 150, dos quais existem vários. Para o primeiro registo encontrado, ou seja,"Vanilla" Flavor, devolve a soma das colunas Quantity e OnOrder. 250
LookUp(Sorvete, Sabor = "Pistache", OnOrder) Procura um registo com Flavor igual a "Pistachio", em relação ao qual não há nenhum. Porque não foi encontrado nenhum, Lookup devolve blank. em branco
LookUp(Sorvete, Sabor = "Baunilha") Procura um registo com Flavor igual a "Vanilla", onde existe um. Uma vez que não foi fornecida nenhum fórmula de redução, todo o registo é devolvido. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filtragem com colunas de escolha

O exemplo a seguir utiliza a tabela Conta no Microsoft Dataverse como origem de dados. Este exemplo mostra como Filtrar a lista de contas baseada nos valores do controlo Combo box selecionados:

Passo a passo

  1. Abra uma aplicação em branco.

  2. Adicione um novo ecrã ao selecionar a opção Novo Ecrã.

  3. No separador Inserir, selecione Galeria e, em seguida, selecione Vertical.

  4. No separador Propriedades do painel direito, abra Origem de Dados e, em seguida, selecione Contas.

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

  6. No separador Inserir, selecione Entrada e, em seguida, selecione Caixa de combinação. Repita o passo para adicionar mais dois controlos de caixa de combinação.

  7. Para cada controlo de caixa de combinação, no separador Propriedades do painel direito, abra Origem de Dados e, em seguida, selecione Contas. Selecione Editar junto à opção Campos e selecione os valores Texto principal e SearchField. O Texto principal deve ser a coluna de escolhas que pretende adicionar à caixa de combinação. Repita o passo para outros dois controlos de caixa de combinação.

    Definir valores de caixa de combinação.

  8. Selecione agora Gallery e defina a propriedade Items como a seguinte fórmula:

    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'))
    

    Origem de dados de contas.

Experiência de utilizador de pesquisa

Os exemplos seguintes utilizam a origem de dadosGelado:

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. À medida que escreve, a lista mostra apenas esses registos correspondentes aos critérios da pesquisa.

Os exemplos no resto deste artigo mostram os resultados da pesquisa de uma lista, com o nome Clientes, que contém os seguintes dados:

Procurar em clientes.

Para criar esta origem de dados como uma coleção, crie um controlo de Button e defina a respetiva propriedade OnSelect com 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" }) )

Tal como neste exemplo, pode apresentar uma lista de registos num controlo de Gallery na parte inferior de um ecrã. Junto à parte superior do ecrã, pode adicionar um controlo de Text input, denominado SearchInput, para que os utilizadores possam especificar os registos que lhe interessam.

Procurar através da entrada de pesquisa.

À medida que o utilizador escreve carateres no SearchInput, os resultados na galeria são filtrados automaticamente. 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. Se o utilizador escrever co na caixa de pesquisa, a galeria apresenta os seguintes resultados:

Pesquisar com começa por.

Para filtrar com base na coluna Nome, defina a propriedade Items do controlo da galeria para uma destas fórmulas:

Fórmula Descrição Resultado
Filtro(Clientes, StartsWith(Nome, SearchInput.Text) ) Filtra as origens de dados dos Clientes nos registos em que a cadeia de pesquisa aparece no início da coluna Nome. O teste é sensível a maiúsculas e minúsculas. Se o utilizador escrever co na caixa de pesquisa, a galeria mostra Carlos João e Cláudia Mendes. A galeria não mostra Miguel Costa porque a coluna Nome desse registo não começa com a cadeia de pesquisa. Filtrar por começar com.
Filter(Clientes, SearchInput.Text no nome) Filtra as origens de dados dos Clientes nos registos em que a cadeia de pesquisa aparece em qualquer parte da coluna Nome. O teste é sensível a maiúsculas e minúsculas. Se o utilizador escrever co na caixa de pesquisa, a galeria mostra Colleen Jones,Cole Miller, e Mike Collins porque a cadeia de pesquisa aparece algures na coluna Nome de todos esses registos. Filtrar por entrada de pesquisa.
Pesquisa(Clientes, SearchInput.Text, Nome) Semelhante à utilização do operador in, a função Search procura uma correspondência em qualquer parte da coluna Name de cada registo. Tem de incluir o nome da coluna entre aspas. Procurar clientes.

Pode expandir a pesquisa para incluir a coluna Empresa e a coluna Nome:

Fórmula Descrição Resultado
Filter(Clientes, StartsWith(Nome, SearchInput.Text) || StartsWith(Empresa, 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). O || operador é true se a função StartsWith for true. Filtrar clientes por começar com.
Filter(Clientes, SearchInput.Text no nome || SearchInput. Texto na Empresa) 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. Filtrar clientes por entrada de pesquisa.
Pesquisa(Clientes, SearchInput.Text, Nome, Empresa) Semelhante à utilização do operador in, a função Search procura a origem de dados Customers para registos em que a coluna Name ou a coluna Company contém a cadeia de pesquisa (por exemplo, co) em qualquer parte na mesma. A função Search é mais fácil de ler e escrever do que Filter se quiser especificar várias colunas e vários operadores in.  Pesquisar clientes com entrada de pesquisa.