💡 Introducción
En el desarrollo de flujos de trabajo empresariales, uno de los desafíos más comunes y críticos es la manipulación de grandes volúmenes de datos. Cuando trabajamos con orígenes de datos como SharePoint Online, Microsoft Dataverse o SQL Server, es sumamente fácil toparse con los límites predeterminados de la API de Power Automate. Un flujo mal optimizado no solo consume demasiadas solicitudes API, sino que puede tardar horas en ejecutarse o, peor aún, fallar debido a un tiempo de espera excedido (Timeout).
Para solucionar estos problemas, Microsoft nos provee de dos herramientas fundamentales: la Paginación (Pagination) y la Optimización de Bucles (Loop Optimization) a través del control de simultaneidad. En este artículo técnico, exploraremos a fondo cómo configurar estas características para transformar flujos lentos en procesos de alto rendimiento que cumplan con los estándares de gobernanza empresarial.
⚙️ Comprensión del Límite de Umbral y la Paginación
Por defecto, la mayoría de los conectores de Power Automate que recuperan registros (como «Obtener elementos» de SharePoint o «Enumerar filas» de Dataverse) tienen un límite de recuperación predeterminado de 100 a 500 registros por llamada. Aunque aumentemos el parámetro de «Recuento superior» (Top Count) en la acción, el conector nunca superará su límite de umbral (Threshold Limit) predeterminado a menos que activemos explícitamente la paginación.
¿Cómo funciona la Paginación?
La paginación permite al motor de Power Automate realizar múltiples llamadas consecutivas y automáticas al origen de datos bajo el capó. Cada llamada trae un «paquete» o página de datos, y el motor los concatena todos en una sola matriz (array) de salida para la siguiente acción.
- Configuración del Umbral: Al activar la paginación, podemos definir un límite de hasta 100,000 elementos (dependiendo de la licencia del usuario y del conector específico).
- Impacto en las peticiones API: Es vital recordar que cada página descargada cuenta como una solicitud API distinta contra los límites diarios del usuario.

⚡ El Arte de Optimizar Bucles (Apply to Each)
Por defecto, la acción Aplicar a cada uno (Apply to each) procesa los elementos de forma secuencial (uno tras otro). Si tenemos que procesar 5,000 registros y cada iteración tarda solo 1 segundo, ¡el flujo tardará casi 1 hora y media en completarse!
Control de Simultaneidad (Concurrency Control)
Para acelerar exponencialmente este proceso, podemos activar el control de simultaneidad en la configuración del bucle. Esto permite procesar múltiples registros en paralelo (hasta un máximo de 50 ramas paralelas).
⚠️ Advertencia: No debes activar la simultaneidad si dentro de tu bucle utilizas variables que se incrementan o modifican (como «Incrementar variable»). Dado que las iteraciones ocurren al mismo tiempo, se producirán colisiones de datos y lecturas sucias, arrojando resultados de negocio totalmente incorrectos. En su lugar, utiliza la composición de datos o expresiones avanzadas.
Evitar Bucles mediante Operaciones de Datos
Antes de usar un bucle, pregúntate si realmente lo necesitas. Muchas tareas de filtrado y mapeo de datos se pueden realizar instantáneamente usando acciones nativas de operaciones de datos:
- Filtrar matriz (Filter Array): Reemplaza la lógica condicional (IF) dentro de un bucle para extraer subconjuntos de datos en milisegundos.
- Seleccionar (Select): Permite transformar la estructura de un JSON o matriz (mapear columnas específicas) sin necesidad de iterar fila por fila.
📊 Tabla Comparativa de Rendimiento
| Método de Procesamiento | Velocidad Relativa | Límite Máximo de Datos | Manejo de Variables | Caso de Uso Recomendado |
|---|---|---|---|---|
| Bucle Secuencial (Por defecto) | Muy lenta (1x) | Bajo (menos de 100 registros) | Seguro para cualquier variable | Procesos pequeños donde el orden secuencial estricto es obligatorio. |
| Bucle Concurrente (Simultaneidad activa) | Extremadamente rápida (hasta 50x) | Alto (hasta 100,000 registros) | No apto para variables globales de estado | Actualizaciones masivas de registros independientes en sistemas externos. |
| Acciones de Datos (Filter Array / Select) | Instantánea (Procesamiento en memoria) | Límite de memoria del motor | No requiere variables intermedio | Filtrar, transformar y dar formato a colecciones de datos antes de enviarlas o exportarlas. |
✍️ Ejercicio Práctico: Configuración Paso a Paso
A continuación, configuraremos un flujo de alto rendimiento para procesar una lista de SharePoint de 10,000 registros, filtrando los elementos activos y formateando sus nombres de manera óptima sin bucles lentos.
Paso 1: Configurar la Paginación en SharePoint
- Agrega la acción Obtener elementos (Get items) de SharePoint a tu flujo de Power Automate.
- Haz clic en los tres puntos (…) en la esquina superior derecha de la acción y selecciona Configuración (Settings).
- Activa la opción de Paginación (Pagination).
- Establece el Límite (Limit) a 10000.
- Haz clic en Listo (Done).

Paso 2: Filtrar los Datos Instantáneamente
- Agrega la acción de operaciones de datos Filtrar matriz (Filter Array) justo debajo de la acción de SharePoint.

- En el campo De (From), selecciona la salida dinámica value de la acción Obtener elementos.

- En la regla de filtrado, define que el estado del elemento sea igual a ‘Activo’ (o el filtrado dentro de sharepoint que necesites).

Paso 3: Transformar las Columnas Necesarias
- Agrega la acción Seleccionar (Select).

- En el campo De (From), introduce la salida (Body) de la acción Filtrar matriz.

- En el mapa clave-valor, define tus nuevas columnas limpias (por ejemplo, NombreEmpleado asocia al valor dinámico Title).
Paso 4: Actualización Masiva Eficiente (Bucle Concurrente)
- Si necesitas escribir de vuelta estos datos filtrados, agrega un bucle Aplicar a cada uno (Apply to each) alimentado por la salida de la acción Seleccionar.
- Ingresa a la Configuración (Settings) de este bucle.
- Activa el Control de simultaneidad (Concurrency Control).
- Arrastra el control deslizante del grado de paralelismo hasta
50. ¡Listo! Tu bucle ahora ejecutará 50 peticiones en paralelo de manera ultra veloz.


Deja un comentario