
Si trabajas con Power Automate, sabes que el rendimiento es el rey. Traer 5,000 filas de SharePoint o Dataverse para luego filtrarlas con una acción de «Filtrar matriz» es como pedir todo el menú de un restaurante para solo comerte una aceituna: ineficiente y lento.
Hoy aprenderás a dominar el Filter Query, la herramienta que ejecuta el filtrado directamente en el servidor.
🏗️ 1. Anatomía de una consulta OData.
Una consulta de filtro se compone de tres elementos:
- Nombre de la columna: (Ojo: siempre el nombre interno).
- Operador lógico: El puente de la condición.
- Valor: El dato que buscas (entre comillas simples para texto/fechas).
🛠️ 2. Diccionario Completo de Operadores
A. Operadores de Comparación Relacional
Para comparar valores numéricos, de fecha o de texto exacto.
Operador |
Significado |
Ejemplo |
eq |
Equal (Igual a) | Status eq 'Active' |
ne |
Not Equal (No es igual a) | Priority ne 'Low' |
gt |
Greater Than (Mayor que) | Price gt 100 |
lt |
Less Than (Menor que) | Stock lt 10 |
le |
Less or Equal (Menor o igual) | Created le '2023-12-31' |
ge |
Greater or Equal (Mayor o igual) | Total ge 500 |
B. Operadores Lógicos de Combinación
Para crear filtros complejos con múltiples variables.
and: Se deben cumplir todas las condiciones.Country eq 'Spain' and City eq 'Madrid'
or: Se debe cumplir al menos una.Category eq 'IT' or Category eq 'RRHH'
not: Niega la expresión siguiente.not (Status eq 'Archived')
🔍 3. Funciones de Texto Avanzadas
No todo es «igual a». A veces necesitas buscar patrones.
startswith(columna, ‘texto’): Registros que empiezan por algo específico.startswith(Title, 'INV-')-> Traerá todas las facturas.
endswith(columna, ‘texto’): Registros que terminan por…endswith(Email, '@gmail.com')
substringof(‘texto’, columna): El famoso «contiene».substringof('Urgent', Subject)-> Busca la palabra «Urgent» en cualquier parte del asunto.- Nota: En Dataverse se suele usar
contains(columna, 'texto').
📅 4. El Master en Fechas
El mayor dolor de cabeza de los desarrolladores. Para que funcionen, debes usar expresiones de Power Automate encerradas en comillas simples.
Filtrar por «Hoy»
Elementos de los últimos 30 días
Filtrar por un año específico
🏆 5. Casos de Uso Reales
Caso A: Filtrar valores nulos (vacíos)
Útil para limpiar reportes antes de enviarlos.
Email ne null o Responsable_Id ne null
Caso B: Filtrar opciones de selección múltiple (Choices)
Si usas Dataverse, recuerda que el filtro suele ir sobre el valor numérico de la opción, no el texto.
statuscode eq 1
Caso C: Búsqueda de IDs en listas de SharePoint
ID eq 45 (Nota: Los IDs son números, no llevan comillas).
🛑 6. Los 3 Errores Prohibidos
- Nombres con espacios: Si tu columna en SharePoint se llama «Fecha de Inicio», el OData fallará. Debes buscar el nombre interno en la configuración de la lista. Se verá algo como:
Fecha_x0020_de_x0020_Inicio. - El formato de fecha ISO: OData es muy estricto. Asegúrate de que tus fechas siempre tengan el formato
yyyy-MM-ddTHH:mm:ssZ. - Límites de delegación: Si tu filtro es demasiado complejo o la columna no está indexada (en SharePoint), el servidor podría ignorar el filtro y devolverte solo los primeros 100-500 registros. ¡Indexa tus columnas!
✅ CASOS PRÁCTICOS
Nota: Recuerda que las expresiones @{...} se insertan desde el editor dinámico de Power Automate.
Nota: Recuerda que las expresiones @{...} se insertan desde el editor dinámico de Power Automate.
