Consultas OData en Power Automate

Filtra en el origen y acelera tus flujos (SharePoint + Dataverse)
Cuando un flujo empieza a “arrastrarse” o a fallar por volumen de datos, casi siempre hay un culpable: estás trayendo demasiadas filas y filtrando después dentro del flujo.
La solución profesional es aplicar OData para filtrar y ordenar en la fuente, reduciendo el “payload” y mejorando rendimiento y confiabilidad. [learn.microsoft.com], [learn.microsoft.com]
✅ ¿Qué es OData?
OData (Open Data Protocol) es un estándar de consulta que permite filtrar, ordenar y limitar datos antes de que lleguen a tu flujo. En Power Automate aparece como campos tipo Filter Query / Filter rows, Order By / Sort by, Top Count / Row count, Select columns, Expand query, etc. [learn.microsoft.com], [learn.microsoft.com]
✅ ¿Por qué OData es clave en Power Automate?
Porque te permite:
- Filtrar en el servidor (menos datos descargados, menos iteraciones). [learn.microsoft.com], [learn.microsoft.com]
- Ordenar en el servidor (evitas ordenar localmente y reduces pasos). [learn.microsoft.com], [learn.microsoft.com]
- Reducir columnas (traer solo lo necesario). [learn.microsoft.com], [learn.microsoft.com]
- Controlar límites/paginación para listas/tablas grandes (sin sorpresas). [learn.microsoft.com], [learn.microsoft.com]
📌 ¿Dónde verás OData en Power Automate?
🟦 SharePoint
- Obtener elementos (Get items) → Consulta de filtro, Pedido por, Recuento superior, Limitar columnas por vista, Paginación. [learn.microsoft.com]
- Obtener archivos (Get files) → mismas capacidades (aplica a bibliotecas). [learn.microsoft.com]
🟪 Dataverse
- Listar filas (List rows) → Filter rows, Select columns, Sort by, Expand query, Row count, Paginación (hasta 100,000). [learn.microsoft.com], [learn.microsoft.com]
🧠 Capacidades clave de OData
1) Filtrar (SharePoint: Filter Query | Dataverse: Filter rows)
Un OData filter es una expresión que se evalúa en el servidor (SharePoint/Dataverse) para devolver solo los registros que cumplen la condición, en vez de traer todo y filtrar dentro del flujo. [learn.microsoft.com], [learn.microsoft.com]
En Power Automate lo verás como:
- SharePoint → Get items / Get files → Consulta de filtro (Filter Query). [learn.microsoft.com]
- Dataverse → List rows → Filter rows (expresión estilo OData). [learn.microsoft.com]
1.1.-✅ Operadores básicos (los más usados)
En filtros OData (especialmente Dataverse) los operadores estándar son:
eq(igual),ne(distinto)gt(mayor),ge(mayor o igual)lt(menor),le(menor o igual) [learn.microsoft.com]
Ejemplos genéricos:
ID eq 20
ID gt 30
ID ge 50 and ID le 100Operadores lógicos para combinar condiciones: and, or [learn.microsoft.com]
(ID gt 50 and ID lt 100) or name ne 'test'1.2.-🔎Filtros por texto (string)
1.2.1.-Igualdad / diferencia
SharePoint (Get items / Get files)
Ejemplo oficial de filtro por columna:
Ubicacion eq 'Norte'
Ubicacion eq 'Norte' and Estado eq 'Aprobado'Dataverse (List rows)
Ejemplo típico con eq sobre texto:
Nombre eq 'Producto'1.2.2.-Empieza con (startswith)
SharePoint soporta startswith:
startswith(Title,'A')Dataverse soporta funciones OData como startswith (documentadas como funciones de consulta)
startswith(name,'Con')1.2.3.-Contiene (contains / substringOf)
SharePoint
En el artículo oficial se indica soporte para substringOf dentro de las consultas de filtro. [learn.microsoft.com]
substringOf('Rep', Title)Dataverse
contains(name,'(sample)') or contains(name,'test')Dataverse soporta contains, endswith, startswith. [learn.microsoft.com]
1.3.-🔢 Filtros numéricos — rangos y umbrales
En Dataverse, el doc oficial lista comparaciones numéricas usando gt/ge/lt/le. [learn.microsoft.com]
Ejemplos:
venta gt 100000
venta ge 50000 and venta le 250000En SharePoint, el artículo oficial también enumera operadores de comparación (incluye lt/le/gt/ge/eq/ne) para consultas de filtro. [learn.microsoft.com]
1.4.-📅 Filtros por fecha — ejemplos reales (y cómo usar expresiones)
SharePoint (Get items / Get files)
Ejemplo oficial: filtrar por fecha usando una expresión dentro del filtro: [learn.microsoft.com]
Fecha gt '@{formatDateTime(utcNow(),'yyyy-MM-dd')}'Esto es útil para “desde hoy” o “desde X fecha” cuando generas dinámicamente el valor. [learn.microsoft.com]
Dataverse (List rows)
El artículo oficial de List rows muestra un ejemplo de filtro por fecha/hora (formato ISO) en Filter rows: [learn.microsoft.com]
createdon ge 2021-01-01T00:00:00-00:001.5.- ✅Filtro OData booleano (Sí/No): true / false
En OData, los campos booleanos se evalúan como expresiones que retornan verdadero o falso, y puedes compararlos explícitamente usando literales booleanos true y false. [learn.microsoft.com], [learn.microsoft.com]
Activo eq true
Activo eq false
Activo eq true and Estado eq 'Aprobado'En Dataverse, el campo Filter rows usa expresiones estilo OData y también se evalúa igual: eq true / eq false. [learn.microsoft.com], [learn.microsoft.com]
1.6.-🧩 Agrupar condiciones con paréntesis (evita resultados “raros”)
Cuando combinas and y or, usa paréntesis para controlar precedencia. Dataverse lo recomienda como Grouping operators. [learn.microsoft.com]
Ejemplo:
(contains(nombre,'ejemplo') or contains(nombre,'prueba')) and venta gt 5000En Sharepoint:
(substringof('ejemplo',nombre) or substringof('prueba',nombre)) and venta gt 50001.7.-🔗 Filtros por columnas de búsqueda (Lookups)
En SharePoint, el artículo oficial muestra que puedes filtrar por una columna lookup usando LookupColumn/Title: [learn.microsoft.com]
Pais/Id eq 10
Pais/Title eq 'Nueva Zelanda'
Pais/Value eq 'Nueva Zelanda'En Dataverse, el enfoque común es usar OData con relaciones/propiedades (y si necesitas traer datos relacionados, se usa Expand query). La documentación de List rows explica cómo usar Expand query para datos relacionados. [learn.microsoft.com]
2) Ordenar (SharePoint: Order By | Dataverse: Sort by)
- SharePoint:
FechaInicio descoTitulo asc[learn.microsoft.com] - Dataverse:
nombre desc(usaascodesc; por defecto es ascendente). [learn.microsoft.com], [learn.microsoft.com]
3) Limitar filas (SharePoint: Top Count | Dataverse: Row count)
- SharePoint: por defecto devuelve 100 ítems; puedes subir hasta 5,000 (límite de umbral). [learn.microsoft.com]
- Dataverse: List rows devuelve hasta 5,000 por defecto; puedes configurar paginación hasta 100,000. [learn.microsoft.com], [learn.microsoft.com]
4) Seleccionar columnas (reduce payload)
- SharePoint: opción Limitar columnas por vista (ideal para traer solo las columnas necesarias). [learn.microsoft.com]
- Dataverse: Select columns (lista separada por comas, por ejemplo
name,createdon,emailaddress1). [learn.microsoft.com]
5) Expandir relaciones (Dataverse)
- Dataverse: Expand query permite traer datos de tablas relacionadas (por ejemplo:
primarycontactid($select=contactid,fullname)). [learn.microsoft.com] - SharePoint: el “expand” como tal no aparece como opción equivalente; en su lugar se usa sintaxis de lookup para filtrar (
Country/Title eq ...). [learn.microsoft.com]
💡 Buenas prácticas
✅ Filtra lo máximo posible en OData y deja Power Automate para la lógica que realmente necesita ejecutarse fuera del origen. [learn.microsoft.com], [learn.microsoft.com]
✅ Reduce columnas:
- SharePoint → “Limitar columnas por vista” (crea una vista específica para el flujo). [learn.microsoft.com]
- Dataverse → “Select columns” para retornar solo lo esencial. [learn.microsoft.com]
✅ Define un orden cuando pagines (especialmente en Dataverse) para evitar resultados inconsistentes al navegar por páginas. [learn.microsoft.com], [learn.microsoft.com]
✅ Activa paginación en listas grandes:
- SharePoint tiene una limitación conocida: en listas con más de 5,000 elementos, si tu filtro no encuentra coincidencias dentro de los primeros 5,000, podrías recibir 0 resultados. La corrección recomendada es habilitar Paginación en la acción. [learn.microsoft.com]
✅ En Dataverse, recuerda:
- El máximo umbral de paginación configurable es 100,000 y se redondea por tamaño de página. [learn.microsoft.com], [learn.microsoft.com]
- En Filter rows, no incluyas
$filter=dentro del cuadro. [learn.microsoft.com]
✅ Conclusiones y Recomendaciones
📌 Si quieres flujos más rápidos y estables, adopta este patrón:
- Filtra en la fuente con OData (Filter Query / Filter rows). [learn.microsoft.com], [learn.microsoft.com]
- Reduce columnas (vista en SharePoint / Select columns en Dataverse). [learn.microsoft.com], [learn.microsoft.com]
- Ordena si vas a paginar (especialmente en Dataverse). [learn.microsoft.com], [learn.microsoft.com]
- Activa paginación cuando el conjunto de datos crece (y recuerda la limitación en SharePoint > 5,000). [learn.microsoft.com], [learn.microsoft.com]
📚 Referencias oficiales (Microsoft)
- SharePoint: Get items / Get files (límites, filtros OData, order by, top count, columnas por vista, paginación y limitación conocida) — Microsoft Learn:
https://learn.microsoft.com/es-es/sharepoint/dev/business-apps/power-automate/guidance/working-with-get-items-and-get-files [learn.microsoft.com] - Dataverse en Power Automate: List rows (Filter rows, Select columns, Sort by, Expand query, paginación hasta 100,000) — Microsoft Learn:
https://learn.microsoft.com/en-us/power-automate/dataverse/list-rows [learn.microsoft.com] - Dataverse Web API: Filter rows using OData (operadores y funciones) — Microsoft Learn:
https://learn.microsoft.com/en-us/power-apps/developer/data-platform/webapi/query/filter-rows [learn.microsoft.com]

