Funcións de Filtro, Busca e Busca

Aplícase a: Aplicacións de lenzo Fluxos de escritorio Aplicacións baseadas en modelos Power Platform CLI

Busca un ou máis rexistros dunha táboa.

Mira este vídeo para aprender a usar as funcións Filtro, **Busca e Buscar :

Nota

Os comandos PAC CLI pac power-fx non admiten a función Busca .

Descripción

A función Filter atopa os rexistros nunha táboa que satisfagan unha fórmula. Utilice Filtro para buscar un conxunto de rexistros que coincidan con un ou máis criterios e descarte aqueles que non.

A función LookUp atopa o primeiro rexistro nunha táboa que satisfai unha fórmula. Use Busca para atopar un único rexistro que coincida cun ou varios criterios.

Para os dous, a fórmula avalíase para cada rexistro da táboa. Os rexistros que fornecen true inclúense no resultado. Ademais dos operadores de fórmula normais, pode usar os operadores en e exactin para coincidencias de cadeas secundarias.

Os campos do rexistro que se están a procesar actualmente están dispoñibles na fórmula. Use o operador ThisRecord ou simplemente faga referencia aos campos por nome como faría con calquera outro valor. O operador As tamén se pode usar para nomear o rexistro que se está a procesar, o que pode axudar a que a fórmula sexa máis fácil de comprender e facer que os rexistros anidados sexan accesibles. Para obter máis información, consulte os seguintes exemplos e traballar co ámbito do rexistro.

A función Search atopa rexistros dunha táboa que conteñen unha cadea nunha das súas columnas. A cadea pode aparecer en calquera lugar da columna; por exemplo, buscar "rob" ou "bert" atoparía unha coincidencia nunha columna que conteña "Robert". A busca diferenza entre maiúsculas e minúsculas. Ao contrario que Filter e LookUp, a función Search usa unha soa cadea para combinar en lugar dunha fórmula.

Filtro e Buscar devolven unha táboa que contén as mesmas columnas que a táboa orixinal e os rexistros que coinciden cos criterios. Busca devolve só o primeiro rexistro atopado, despois de aplicar unha fórmula para reducir o rexistro a un único valor. Se non se atopan rexistros, Filter e Search devolven unha táboa baleira e LookUp devolve en branco.

As táboas son un valor en Power Apps, ao igual que unha cadea ou un número. Pódense pasar a e devolver de funcións. Filtro, Busca e Buscar non modifican unha táboa. En lugar diso, toman unha táboa como argumento e devolven unha táboa, un rexistro ou un único valor. Para obter máis detalles, consulte Traballar con táboas.

Delegación

Se é posible, Power Apps delegará as operacións de filtraxe e ordenación á orixe de datos e páxina a través dos resultados a pedido. Por exemplo, cando abre unha aplicación que mostra un control de Galeríacheo de datos, só aparecerá inicialmente o primeiro conxunto de rexistros no dispositivo. Cando o usuario se desprace, extraeranse máis datos da orixe de datos. Deste xeito acelérase a hora de inicio da aplicación e pódese acceder a conxuntos de datos moi grandes.

Non obstante, non sempre se pode delegar. As orixes de datos varían segundo as funcións e operadores que admiten coa delegación. Se non é posible facer unha delegación completa dunha fórmula, o ambiente de creación marcará cun aviso a parte que non se pode delegar. Sempre que sexa posible, pense en cambiar a fórmula para evitar as funcións e operadores que non se poden delegar. A lista de delegación enumera as orixes de datos e operacións que se poden delegar.

Se a delegación non é posible, Power Apps só extraerá un pequeno conxunto de rexistros para traballar a nivel local. As funcións de filtraxe e ordenación operarán nun conxunto reducido de rexistros. Pode que os elementos dispoñibles na Galería non sexan o historial completo, o que podería confundir os usuarios.

Consulte a visión xeral da delegación para obter máis información.

Sintaxe

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

  • Table - Obrigatorio. Táboa para buscar.
  • Formula(s) - Obrigatorio. A fórmula pola que se avalía cada rexistro da táboa. A función devolve todos os rexistros que fornecen true. Pode facer referencia ás columnas dentro da táboa. Se fornece máis dunha fórmula, os resultados de todas as fórmulas combínanse coa función And.

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

  • Table - Obrigatorio. Táboa para buscar.
  • SearchString - Obrigatorio. Cadea que buscar. Se aparece en branco ou unha cadea baleira, devolveranse todos os rexistros.
  • Column(s) - Obrigatorio. Os nomes das columnas dentro da Táboa para buscar. Se se atopa SearchString dentro dos datos dalgunha destas columnas como unha coincidencia parcial, devolverase o rexistro completo.

Nota

En Power Apps anterior á versión 3.24042, os nomes de columna para a función Busca especificábanse cunha cadea de texto usando comiñas dobres e, se estaban conectados a un orixe de datos tamén necesitaban ser nomes lóxicos. Por exemplo, utilizouse o nome lóxico "cr43e_name" con comiñas dobres en lugar do nome para mostrar Nome sen comiñas. Para fontes de datos SharePoint e Excel que conteñen nomes de columnas con espazos, cada espazo especificouse con "_x0020_", por exemplo "Nome da columna" as "Nome_x0020_columna". Despois desta versión, todas as aplicacións actualizáronse automaticamente á nova sintaxe descrita neste artigo.

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

  • Table - Obrigatorio. Táboa para buscar. Na interface de usuario, a sintaxe móstrase como orixe enriba da caixa de funcións.
  • Formula - Obrigatorio. A fórmula pola que se avalía cada rexistro da táboa. A función devolve o primeiro rexistro que fornece true. Pode facer referencia ás columnas dentro da táboa. Na interface de usuario, a sintaxe móstrase como condición enriba da caixa de funcións.
  • ReductionFormula - Opcional. Esta fórmula avalíase sobre o rexistro que se atopou e logo reduce o rexistro a un único valor. Pode facer referencia ás columnas dentro da táboa. Se non emprega este parámetro, a función devolve o rexistro completo da táboa. Na interface de usuario, a sintaxe móstrase como resultado enriba da caixa de funcións.

Exemplos

Os exemplos seguintes usan a orixe de datosXeado:

Xeado orixe de datos.

Fórmula Descripción Resultado
Filter( IceCream, OnOrder > 0 ) Devolve rexistros onde OnOrder é maior que cero. Filtro En pedido.
Filter( IceCream, Quantity + OnOrder > 225 ) Devolve rexistros onde a suma das columnas Cantidade e OnOrder é maior que 225. Filtrar cantidade e pedido.
Filter( IceCream, "chocolate" in Lower( Flavor ) ) Devolve rexistros onde aparece a palabra "chocolate" no nome de Sabor, independentemente das maiúsculas ou minúsculas. Filtrar abaixo.
Filtro (Xeado, Cantidade < 10 && Pedido < 20) Devolve rexistros onde Cantidade é inferior a 10 e OnOrder é inferior a 20. Ningún rexistro coincide con estes criterios, polo que se devolve unha táboa baleira. Filtrar por cantidade.
Buscar (Xeado, "choc", Sabor) Devolve rexistros onde aparece a cadea "choc" no nome de Sabor, independentemente das maiúsculas ou minúsculas. Busca elementos.
Buscar (Xeado, "", Sabor) Debido a que o termo de busca está baleiro, devólvense todos os rexistros. Busca todos os elementos.
LookUp( IceCream, Flavor = "Chocolate", Quantity ) Busca un rexistro con Sabor igual a "Chocolate", dos cales hai un. No primeiro rexistro atopado, devolve a Cantidade dese rexistro. 100
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) Buscas un disco cunha Cantidade maior que 150, dos que hai múltiples. Para o primeiro rexistro que se atope, que é o Sabor "Vainilla", devolve a suma das columnas de Cantidade e OnOrder. 250
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) Busca un rexistro co Sabor igual a "Pistacho", dos que non hai ningún. Porque non se atopa ningún, Buscar devolve en branco. blank
LookUp( IceCream, Flavor = "Vanilla" ) Busca un rexistro con Sabor igual a "Vainilla", dos cales hai un. Como non se proporcionou ningunha fórmula de redución, devólvese o rexistro completo. { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 }

Filtraxe con columnas de elección

O seguinte exemplo usa a táboa Conta en Microsoft Dataverse como orixe de datos. Este exemplo mostra como Filtrar a lista de contas baseada nos valores de control da caixa de combinación seleccionados:

Paso a paso

  1. Abra unha aplicación en branco.

  2. Engada unha nova pantalla seleccionando a opción Nova pantalla.

  3. No separador Inserir, seleccione Galería e, a seguir, seleccione Vertical.

  4. No separador Propiedades do panel da dereita, abra orixe de datos e logo seleccione Contas.

  5. (Opcional) Na lista Deseño, seleccione diferentes opcións.

  6. No separador Inserir, seleccione Entrada e, a seguir, seleccione Caixa de combinación. Repita o paso para engadir outros dous controis da caixa de combinación.

  7. Para cada control de caixa de combinación, no separador Propiedades do panel da dereita, abra orixe de datos e logo seleccione Contas. Seleccione Editar preto da opción Campos e seleccione os valores Texto primario e Campo de busca. O Texto primario debería ser a columna de opcións que desexe engadir ao cadro combinado. Repita o paso para outros dous controis da caixa de combinación.

    Establecer valores de caixa combinada.

  8. Agora seleccione o control Galería e configure a propiedade Elementos da 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'))
    

    Contas orixe de datos.

Experiencia de busca do usuario

Os exemplos seguintes usan a orixe de datosXeado:

En moitas aplicacións, pode escribir un ou varios caracteres nunha caixa de busca para filtrar unha lista de rexistros nun gran conxunto de datos. Ao escribir, a lista só mostra os rexistros que coinciden cos criterios de busca.

Os exemplos do resto deste artigo mostran os resultados da busca nunha lista, denominada Clientes, que conteñen estes datos:

Busca en clientes.

Para crear esta orixe de datos como unha colección, cree un control de Botón e configure a súa propiedade OnSelect nesta 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" }) )

Como neste exemplo, pode mostrar unha lista de rexistros nun control de galería na parte inferior dunha pantalla. Cerca da parte superior da pantalla, pode engadir un control de Entrada de texto, nomeado SearchInput, para que os usuarios poidan especificar que rexistros lles interesan.

Busca usando a entrada de busca.

A medida que o usuario escribe caracteres en SearchInput, os resultados da galería fíltranse automaticamente. Neste caso, a galería está configurada para mostrar rexistros para os que o nome do cliente (non o nome da empresa) comeza coa secuencia de caracteres en SearchInput. Se o usuario escribe co na caixa de busca, a galería amosa estes resultados:

A busca con comeza por.

Para filtrar pola columna Name, estableza a propiedade Elementos do control de galería nunha destas fórmulas:

Fórmula Descripción Resultado
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) Filtra a orixe de datos Customers polos rexistros nos que aparece a cadea de busca ao comezo da columna Name. A proba non diferenza entre maiúsculas e minúsculas. Se o usuario escribe co na caixa de busca, a galería mostra Colleen Jones e Cole Miller. A galería non mostra Mike Collins porque a columna Name para ese rexistro non comeza coa cadea de busca. Filtrar con comezar por.
Filter( Customers, SearchInput.Text in Name ) Filtra a orixe de datos Customers polos rexistros nos que aparece a cadea de busca en calquera lugar da columna Name. A proba non diferenza entre maiúsculas e minúsculas. Se o usuario escribe co na caixa de busca, a galería mostra Colleen JonesCole Miller, e Mike Collins porque a cadea de busca aparece nalgún lugar da columna Name de todos eses rexistros. Filtrar coa entrada de busca.
Busca (clientes, SearchInput.Text, nome) Semellante ao uso do operador in, a función Search busca unha coincidencia en calquera parte da columna Name de cada rexistro. Debe incluír o nome da columna entre comiñas dobres. Busca clientes.

Pode ampliar a súa busca para incluír a columna Compañía e a columna Nome:

Fórmula Descripción Resultado
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) Filtra a orixe de datos Customers polos rexistros nos cales a columnaName ou a columna Company comeza coa cadea de busca (por exemplo, co). O || operador é true se a función StartsWith é true. Filtrar os clientes comezan con.
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) Filtra a orixe de datos Customers polos rexistros nos cales a columnaName ou a columna Company contén a cadea de busca (por exemplo, co) en calquera parte. Filtra a entrada de busca de clientes.
Busca (clientes, SearchInput.Text, nome, empresa) Similar ao uso do operador in, a función Search busca na orixe de datos Customers os rexistros nos cales a columna Name ou a columna Company contén a cadea de busca (por exemplo, co) en calquera parte. A función Search é máis fácil de ler e escribir que Filter se desexa especificar varias columnas e varios operadores in.  Busca clientes coa entrada de busca.