Funções Filter, Search e LookUp

Aplica-se a: Aplicações de tela Fluxos de ambiente de trabalho Aplicações condicionadas por modelo Power Platform CLI

Localiza um ou mais registos numa tabela.

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

Nota

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

Descrição

A função Filter localiza registos numa tabela que satisfazem uma fórmula. Utilize Filter para localizar um conjunto de registos que corresponde a um ou mais critérios e para eliminar os 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 pode 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.

As opções Filter e Search devolvem uma tabela que contém as mesmas colunas da tabela original e os registos que correspondem aos critérios. A opção LookUp devolve apenas o primeiro registo encontrado, depois de aplicar uma fórmula para reduzir o registo para um valor único. Não se for encontrado qualquer registo, Filter e Search devolvem uma tabela vazia e LookUp devolve blank.

Tabelas são um valor no Power Apps, tal como uma cadeia ou um número. Podem ser transmitidos a funções e devolvidos das mesmas. As opções Filter, Search e LookUp 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

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

  • Table – Obrigatório. Tabela a pesquisar.
  • Fórmula(s) – 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.

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

  • Table – Obrigatório. Tabela a pesquisar.
  • SearchString – Obrigatório. A cadeia a procurar. Se blank ou uma cadeia vazia, todos os registos são devolvidos.
  • Column(s) – Obrigatório. Os nomes das colunas na Tabela a procurar. As colunas a pesquisar devem conter texto. Os nomes das colunas devem ter cadeias e colocadas entre aspas duplas. No entanto, os nomes das colunas devem ser estáticos e não podem ser calculadas com uma fórmula. Se SearchString for encontrado nos dados de qualquer uma destas colunas como correspondência parcial, o registo completo vai ser devolvido.

Nota

Para origens de dados do SharePoint e do Excel que contêm nomes de coluna com espaços, especifique cada espaço como "_x0020_". Por exemplo, especifique "Nome da Coluna" como "Column_x0020_Name".

LookUp(Table*, Formula [, *ReductionFormula* ] )

  • Table – Obrigatório. Tabela a pesquisar. Na IU, a sintaxe é mostrada como source acima da caixa de função.
  • Formula – 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
Filter( IceCream, OnOrder > 0 ) Devolve os registos, sendo que OnOrder é superior a zero. Filtrar pela ordem.
Filter( IceCream, Quantity + OnOrder > 225 ) Devolve os registos em que a soma das colunas Quantidade e OnOrder é superior a 225. Filtrar quantidade e ordem.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Devolve registos onde a palavra "chocolate" aparece no nome Flavor, independentemente de terem letras em maiúsculas ou minúsculas. Filtrar por minúsculas.
Filter(IceCream, Quantity < 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.
Search( IceCream, "choc", "Flavor" ) Devolve registos onde a palavra "choc" aparece no nome Flavor, independentemente de terem letras em maiúsculas ou minúsculas. Itens de Pesquisa.
Search( IceCream, "", "Flavor" ) Uma vez que o termo de pesquisa está vazio, todos os registos são devolvidos. Procurar todos os itens.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Procura um registo com Flavor igual a "Chocolate", onde existe um. Para o primeiro registo encontrado, devolve a Quantidade desse registo. 100
LookUp( IceCream, Quantity > 150, Quantity + 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( IceCream, Flavor = "Pistachio", 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( IceCream, Flavor = "Vanilla" ) 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||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'))
    

    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 tópico 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(Customers, Table({ 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
Filter( Customers, StartsWith( Name, 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( Customers, SearchInput.Text in Name ) 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.
Search( 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(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, 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(Customers, SearchInput.Text in Nome || SearchInput. Text in 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.
Search( 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. Tem de incluir os nomes das colunas entre aspas.  Pesquisar clientes com entrada de pesquisa.