Funciones Filter, Search y LookUp
Se aplica a: Aplicaciones de lienzo Flujos de escritorio Aplicaciones basadas en modelos Power Pages Power Platform CLI
Busca uno o varios registros en una tabla.
Vea este vídeo para aprender a usar las funciones Filter, **Search y LookUp:
Nota
Los comandos PAC CLI pac power-fx no admiten la función Search.
Description
La función Filter busca registros en una tabla que satisface una fórmula. Use la función Filter para buscar el conjunto de los registros que cumplen uno o varios criterios y descartar los que no los cumplen.
La función LookUp busca el primer registro de una tabla que satisface una fórmula. Use LookUp para encontrar un único registro que coincida con uno o varios criterios.
En ambos casos, la fórmula se evalúa para cada registro de la tabla. Los registros que dan como resultado true se incluyen en el resultado. Además de los operadores de la fórmula normal, puede usar los operadores in y exactin para las coincidencias de subcadenas.
Los campos de registro que se están procesando actualmente estarán disponibles en la formula. Use el operador ThisRecord o simplemente haga referencia a los campos por nombre como lo haría con cualquier otro valor. El operador As también se puede usar para nombrar el registro que se está procesando, lo que puede ayudar a que su fórmula sea más fácil de entender y hacer accesibles los registros anidados. Para obtener más información, vea los ejemplos siguientes y trabajar con el ámbito de registros.
La función Search busca registros en una tabla que contengan una cadena en una de sus columnas. La cadena puede estar en cualquier lugar de la columna. Por ejemplo, si busca "rob" o "bert" encontrará una coincidencia si una columna contiene "Roberto". La búsqueda no distingue mayúsculas de minúsculas. A diferencia de Filter y LookUp, la función Search usa solo una cadena de coincidencia en lugar de una fórmula.
Filter y Search devuelven una tabla que contiene las mismas columnas que la tabla original y los registros que coinciden con los criterios. LookUp devuelve solo el primer registro encontrado después de aplicar una fórmula para reducir el registro a un solo valor. Si no se encuentra ningún registro, las funciones Filter y Search devuelven una tabla vacía, y LookUp devuelve blank.
Las tablas son un valor en Power Apps, tal como una cadena o un número. Se pueden pasar a funciones y las funciones pueden devolverlas. Las funciones Filter, Search y LookUp no modifican la tabla. En vez de eso, usan la tabla como argumento y devuelven una tabla, un registro o un solo valor de ella. Consulte cómo trabajar con tablas para más detalles.
Delegación
Siempre que sea posible, Power Apps delegará las operaciones de filtrado y ordenación al origen de datos y se desplazará por los resultados a petición. Por ejemplo, cuando se inicia una aplicación que muestra un control Galería lleno de datos, inicialmente solo se traerá al dispositivo el primer conjunto de registros. A medida que el usuario se desplace por los datos, se traerán más datos del origen de datos. El resultado es un inicio más rápido de la aplicación y acceso a conjuntos de datos muy grandes.
Sin embargo, la delegación no siempre es posible. La compatibilidad de funciones y operadores con la delegación varía según el origen de datos. Si la delegación completa de una fórmula no es posible, el entorno de creación indicará la parte que no se puede delegar con una advertencia. Si es posible, considere la posibilidad de cambiar la fórmula para que no incluya las funciones y los operadores que no se pueden delegar. La lista de delegación detalla qué orígenes de datos y operaciones se pueden delegar.
Si la delegación no es posible, Power Apps solo descargará un conjunto reducido de registros para trabajar localmente. Las funciones de filtrado y ordenación trabajarán con un conjunto reducido de registros. En la Galería puede no estará disponible la historia completa, y esto puede resultar confuso a los usuarios.
Consulte la información general sobre delegación para obtener más información.
Sintaxis
Filter(Table*, Formula1 [, *Formula2*, ... ] )
- Table - obligatorio. La tabla en la que se va a buscar.
- Formula(s): requerido. La fórmula por la que se evalúa cada registro de la tabla. La función devuelve todos los registros cuyo resultado es true. Puede hacer referencia a columnas dentro de la tabla. Si se proporciona más de una fórmula, los resultados de todas las fórmulas se combinan con la función And.
Search(Table*, SearchString, Column1 [, *Column2*, ... ] )
- Table - obligatorio. La tabla en la que se va a buscar.
- SearchString: requerido. La cadena que se va a buscar. Si es blank o es una cadena vacía, se devolverán todos los registros.
- Column(s): requerido. Los nombres de las columnas dentro de Table que se van a buscar. Si se encuentra SearchString dentro de los datos de cualquiera de estas columnas como una coincidencia parcial, se devolverá el registro completo.
Nota
En Power Apps antes de la versión 3.24042, los nombres de las columnas para la función Buscar se especificaban con una cadena de texto usando comillas dobles y, si estaban conectadas a un origen de datos también debían ser nombres lógicos. Por ejemplo, se utilizó el nombre lógico "cr43e_name" con comillas dobles en lugar del nombre Name sin comillas. Para orígenes de datos de SharePoint y Excel que contienen nombres de columnas con espacios, cada espacio se especificó con "_x0020_", por ejemplo "Column Name" como "Column_x0020_Name". Después de esta versión, todas las aplicaciones se actualizaron automáticamente a la nueva sintaxis descrita en este artículo.
LookUp(Table*, Formula [, *ReductionFormula* ] )
- Table - obligatorio. La tabla en la que se va a buscar. En la interfaz de usuario, la sintaxis se muestra como origen encima del cuadro de función.
- Formula (obligatorio). La fórmula por la que se evalúa cada registro de la tabla. La función devuelve el primer registro cuyo resultado es true. Puede hacer referencia a columnas dentro de la tabla. En la interfaz de usuario, la sintaxis se muestra como condición encima del cuadro de función.
- ReductionFormula: opcional. Esta fórmula se evalúa en el registro que se ha encontrado y luego el registro se reduce a un valor único. Puede hacer referencia a columnas dentro de la tabla. Si no se usa este parámetro, la función devuelve el registro completo de la tabla. En la interfaz de usuario, la sintaxis se muestra como resultado encima del cuadro de función.
Ejemplos
Los ejemplos siguientes usan el origen de datosIceCream:
Fórmula | Description | Result |
---|---|---|
Filter( IceCream, OnOrder > 0 ) | Devuelve aquellos registros en los que OnOrder es mayor que cero. | |
Filter( IceCream, Quantity + OnOrder > 225 ) | Devuelve aquellos registros en los que la suma de las columnas Quantity y OnOrder es mayor que 225. | |
Filter( IceCream, "chocolate" in Lower( Flavor ) ) | Devuelve aquellos registros donde aparece la palabra "chocolate" en el nombre Flavor, sin tener en cuenta mayúsculas o minúsculas. | |
Filter(IceCream, Quantity < 10 && OnOrder < 20) | Devuelve aquellos registros donde Quantity es menor que 10 y la cantidad OnOrder es menor que 20. No hay registros que coincidan con estos criterios, por lo que se devolverá una tabla vacía. | |
Search(IceCream, "choc", Flavor) | Devuelve aquellos registros donde aparece la cadena "choc" en el nombre Flavor, sin tener en cuenta mayúsculas o minúsculas. | |
Search(IceCream, "", Flavor) | Dado que el término de búsqueda está vacío, se devolverán todos los registros. | |
LookUp( IceCream, Flavor = "Chocolate", Quantity ) | Busca un registro cuyo valor de Flavor sea igual a "Chocolate". En este caso, devuelve uno. Para el primer registro que se encuentra, devuelve el valor de Cantidad de ese registro. | 100 |
LookUp( IceCream, Quantity > 150, Quantity + OnOrder ) | Busca un registro cuyo valor de Quantity sea mayor que 150. En este caso, devuelve varios. Para el primer registro que se encuentra, que es el Flavor "Vanilla", devuelve la suma de las columnas Quantity y OnOrder. | 250 |
LookUp( IceCream, Flavor = "Pistachio", OnOrder ) | Busca un registro cuyo valor de Flavor sea igual a "Pistachio". En este caso no devuelve ninguno. Como no se encuentra ninguno, Búsqueda devuelve blank. | blank |
LookUp( IceCream, Flavor = "Vanilla" ) | Busca un registro cuyo valor de Flavor sea igual a "Vanilla". En este caso, devuelve uno. Como no se proporcionó ninguna fórmula de reducción, se devuelve todo el registro. | { Flavor: "Vanilla", Quantity: 200, OnOrder: 75 } |
Filtrado con columnas de elección
El siguiente ejemplo usa la tabla Cuenta en Microsoft Dataverse como origen de datos. Este ejemplo muestra cómo Filtrar la lista de cuentas según los valores del control Combo box seleccionados:
Paso a paso
Abra una aplicación en blanco.
Agregue una nueva pantalla seleccionando la opción Nueva pantalla.
En la pestaña Insertar, seleccione Galería y luego seleccione Vertical.
En al pestaña Propiedades del panel de la derecha, abra origen de datos y luego seleccione Cuentas.
(Opcional) En la lista Diseño, seleccione diferentes opciones.
En la pestaña Insertar, seleccione Entrada y, a continuación, Cuadro combinado. Repita el paso para agregar dos controles de cuadro combinado más.
Para cada control de cuadro combinado, en la pestaña Propiedades del panel de la derecha, abra origen de datos y luego seleccione Cuentas. Seleccione Editar junto a la opción Campos y luego seleccione los valores Texto principal y Campo de búsqueda. Texto principal debe ser la columna de opciones que desea agregar al cuadro combinado. Repita el paso para los otros dos controles de cuadro combinado.
Ahora seleccione el control Gallery y establezca la propiedad Items en la siguiente 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'))
Experiencia de búsqueda del usuario
Los ejemplos siguientes usan el origen de datosIceCream:
En muchas aplicaciones, puede escribir uno o varios caracteres en un cuadro de búsqueda para filtrar una lista de registros en un conjunto de datos grande. A medida que escribe, la lista muestra solo los registros que coinciden con los criterios de búsqueda.
Los ejemplos que aparecen en el resto de este artículo muestran los resultados de buscar en una lista denominada Customers, que contiene estos datos:
Para crear este origen de datos como una colección, cree un control Button y establezca la propiedad OnSelect en esta 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 en este ejemplo, puede mostrar una lista de registros en un control Gallery en la parte inferior de una pantalla. Cerca de la parte superior de la pantalla, puede agregar un control Text input denominado SearchInput, de modo que los usuarios puedan especificar los registros que más les interesen.
A medida que el usuario escribe caracteres en SearchInput, automáticamente se filtran los resultados en la galería. En este caso, se configura la galería para que muestre los registros para los que el nombre del cliente (no el nombre de la empresa) comienza con la secuencia de caracteres de SearchInput. Si el usuario escribe co en el cuadro de búsqueda, la galería muestra estos resultados:
Para filtrar según la columna Nombre, establezca la propiedad Items del control Gallery en una de estas fórmulas:
Fórmula | Descripción | Resultado |
---|---|---|
Filter( Customers, StartsWith( Name, SearchInput.Text ) ) | Filtra el origen de datos Clientes para los registros en los que la cadena de búsqueda aparece al principio de la columna Name. La prueba no distingue mayúsculas de minúsculas. Si el usuario escribe co en el cuadro de búsqueda, la galería mostrará Colleen Jones y Cole Miller. La galería no mostrará Mike Collins porque la columna Name de ese registro no comienza por la cadena de búsqueda. | |
Filter( Customers, SearchInput.Text in Name ) | Filtra el origen de datos Clientes para los registros en los que la cadena de búsqueda aparece en cualquier parte de la columna Name. La prueba no distingue mayúsculas de minúsculas. Si el usuario escribe co en el cuadro de búsqueda, la galería mostrará Colleen Jones,Cole Miller y Mike Collins, ya que la cadena de búsqueda aparece en algún lugar de la columna Name de todos esos registros. | |
Search(Customers, SearchInput.Text, Name) | De forma parecida al uso del operador in, la función Search busca una coincidencia en cualquier parte de la columna Name de cada registro. Debe incluir el nombre de la columna entre comillas dobles. |
Puede expandir la búsqueda para incluir la columna Empresa y la columna Nombre:
Fórmula | Descripción | Resultado |
---|---|---|
Filter(Customers, StartsWith(Name, SearchInput.Text) || StartsWith(Company, SearchInput.Text) ) | Filtra el origen de datos Customer para buscar registros en los que la columna Name o la columna Company comienza por la cadena de búsqueda (por ejemplo, co). El || operador será true si la función StartsWith es también true. | |
Filter(Customers, SearchInput.Text in Name || SearchInput. Text in Company) | Filtra el origen de datos Clientes de aquellos registros en los que la columna Name o la columna Company contienen la cadena de búsqueda en cualquier lugar (por ejemplo, co). | |
Search(Customers, SearchInput.Text, Name, Company) | De forma parecida al uso del operador in, la función Search busca en el origen de datos Clientes aquellos registros en los que la columna Name o la columna Company contienen la cadena de búsqueda en cualquier lugar (por ejemplo, co). La función Search es más fácil de leer y escribir que Filter si desea especificar varias columnas y varios operadores in. |