Novedades Power Platform

Para la Transformación Digital e Innovación Tecnológica

Novedades Power Platform

Para la Transformación Digital e Innovación Tecnológica

Power AutomatePower Platform

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:


📌 ¿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


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

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 100

Operadores 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 250000

En 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:00

1.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 5000

En Sharepoint:

(substringof('ejemplo',nombre) or substringof('prueba',nombre)) and venta gt 5000

1.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)


3) Limitar filas (SharePoint: Top Count | Dataverse: Row count)


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:

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:


✅ Conclusiones y Recomendaciones

📌 Si quieres flujos más rápidos y estables, adopta este patrón:

  1. Filtra en la fuente con OData (Filter Query / Filter rows). [learn.microsoft.com], [learn.microsoft.com]
  2. Reduce columnas (vista en SharePoint / Select columns en Dataverse). [learn.microsoft.com], [learn.microsoft.com]
  3. Ordena si vas a paginar (especialmente en Dataverse). [learn.microsoft.com], [learn.microsoft.com]
  4. 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]

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

advanced-floating-content-close-btnBoton