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

Localiza um ou mais registos numa tabela.

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( Tabela, Fórmula1 [, Fórmula2, ... ] )

  • 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( Tabela, SearchString, Coluna1 [, Coluna2, ... ] )

  • 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 dados IceCream:

Fórmula Descrição Resultado
Filter( IceCream, OnOrder > 0 ) Devolve os registos, sendo que OnOrder é superior a zero.
Filter( IceCream, Quantity + OnOrder > 225 ) Devolve os registos em que a soma das colunas Quantidade e OnOrder é superior a 225.
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.
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.
Search( IceCream, "choc", "Flavor" ) Devolve registos onde a palavra "choc" aparece no nome Flavor, independentemente de terem letras em maiúsculas ou minúsculas.
Search( IceCream, "", "Flavor" ) Uma vez que o termo de pesquisa está vazio, todos os registos são devolvidos.
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 }

Experiência de utilizador de pesquisa

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:

Para criar esta origem de dados como uma coleção, crie um controlo de Botão e defina a respetiva propriedade OnSelect com esta fórmula:

ClearCollect( os clientes, Table( { Nome: "Pedro Garcia", Empresa: "Northwind Traders" }, { Nome: "Cole Santos", 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 Galeria na parte inferior de um ecrã. Junto à parte superior do ecrã, pode adicionar um controlo de Entrada de texto, denominado SearchInput, para que os utilizadores possam especificar os registos que lhe interessam.

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

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.
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.
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. Tenha em atenção que tem de incluir o nome da coluna entre aspas.

Pode expandir a pesquisa para incluir a coluna Empresa, bem como 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.
Filter( Customers, SearchInput.Text in Name || SearchInput.Text in Company ) 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.
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. Tenha em atenção que tem de incluir os nomes das colunas entre aspas.

Nota

Pode indicar-nos as suas preferências no que se refere ao idioma da documentação? Responda a um breve inquérito. (tenha em atenção que o inquérito está em inglês)

O inquérito irá demorar cerca de sete minutos. Não são recolhidos dados pessoais (declaração de privacidade).