«Apply to each» en Power Automate: entender, controlar y evitar el bucle
«Auf alle anwenden» procesa listas elemento por elemento y a menudo aparece de forma no intencionada. Como funciona el bucle, por que ralentiza y cuando se puede eliminar.
Filter Array y Select sustituyen a Apply to Each al filtrar y remodelar arrays, y se ejecutan bastante más rápido.
Cuando un flujo en la nube tiene que recorrer un array, muchos recurren automáticamente a la acción Apply to Each. Para casos sencillos eso está perfectamente bien, pero en cuanto se trata solo de filtrar un array o cambiar la forma de sus objetos, merece la pena mirar dos alternativas de la categoría Operaciones de datos: Filter Array y Select. Ambas realizan exactamente esta tarea en un único paso, sin que el flujo tenga que recorrer cada elemento individualmente.
Este artículo muestra cómo funcionan las dos acciones, dónde sustituyen de forma razonable a Apply to Each y dónde un bucle sigue siendo la opción correcta. Sobre los límites del propio Apply to Each, por ejemplo con arrays muy grandes y los límites de acciones de Power Automate, encontrarás más información en el artículo sobre los límites de acciones de Power Automate.
Apply to Each ejecuta las acciones que contiene para cada uno de los elementos de un array. Con 200 pedidos y dos acciones dentro del cuerpo del bucle, eso son 400 ejecuciones individuales, que cuentan todas contra el límite de acciones de tu flujo y quedan registradas individualmente en el historial del flujo. Si solo se trata de filtrar determinados elementos o renombrar campos, este esfuerzo surge sin una razón real, porque para eso están precisamente las Operaciones de datos. Microsoft lo describe así en su propia guía: considera usar una operación de filtro o de selección en lugar de una condición dentro de un bucle para encontrar elementos de una tabla que cumplan determinados criterios; este enfoque puede simplificar el flujo en la nube y mejorar el rendimiento, tal como se indica en la descripción oficial de las Operaciones de datos en Power Automate. Filter Array y Select se ejecutan cada una como una única acción, independientemente de si el array tiene cinco o cinco mil entradas.
La acción Filter Array reduce un array a los objetos que cumplen tus criterios, según la documentación oficial de las Operaciones de datos. En la sección Consulta de filtro indicas qué campo se debe comparar con qué valor, por ejemplo Estado es igual a Abierto, y obtienes como resultado un nuevo array con exactamente las entradas que coinciden. Hay dos cosas que debes saber al respecto:
Para comparaciones sencillas basta con la vista básica; para condiciones combinadas con lógica Y/O cambias al modo avanzado y escribes la expresión directamente.
Mientras que Filter Array cambia el número de objetos, Select cambia su forma. Con esta acción puedes renombrar campos, componer nuevos campos a partir de otros existentes u omitir los campos que no necesites, sin que cambie el número de objetos del array. Un ejemplo de la documentación de Microsoft: a partir de objetos con los campos first y last, Select crea un array con FirstName, FamilyName y un campo FullName adicional que combina ambos valores. El resultado es de nuevo un array que puedes pasar directamente a las acciones siguientes, por ejemplo a una acción Create CSV table o a una acción de SharePoint. Según Microsoft, esto no solo reduce la complejidad de tu flujo, sino también el tamaño de la carga útil cuando los datos se entregan posteriormente a otro sistema.
En la práctica, las dos acciones casi siempre van una detrás de otra. Un proceso típico que puedes implementar sin una sola acción Apply to Each:
1. Una acción como Get Items o una llamada HTTP devuelve un array con todos los pedidos.
2. Filter Array reduce el array a los pedidos cuyo estado es igual a Abierto.
3. Select remodela los objetos restantes: solo se conservan el número de pedido, el nombre del cliente y el importe, con nombres de campo descriptivos para el sistema de destino.
4. El resultado pasa directamente a una acción que procesa varios registros a la vez, por ejemplo Create CSV table o una acción por lotes del conector de destino.
Cuatro acciones en lugar de un bucle con potencialmente cientos de ejecuciones, además de un flujo que sigue siendo comprensible de un vistazo. Así mantienes el control sobre cada paso de procesamiento, porque cada acción se encarga solo de una tarea claramente delimitada.
Filter Array y Select no sustituyen a un bucle cuando se necesita un efecto secundario propio por cada elemento, por ejemplo cuando hay que enviar un correo electrónico individualmente por cada pedido, crear un registro en un sistema sin endpoint por lotes, o llamar a un subflujo. Incluso cuando el procesamiento de un elemento depende del resultado del anterior, un bucle suele seguir siendo la solución más sencilla. Si trabajas directamente con Dataverse, existe incluso una tercera opción: en lugar de usar Filter Array y Select en el flujo, según Microsoft es mejor filtrar y seleccionar los datos directamente en el origen mediante las opciones Seleccionar columnas y Filtrar filas de la acción correspondiente, lo que reduce desde el principio la cantidad de datos transferidos. Dónde está exactamente el límite para tu configuración se evalúa mejor a partir del flujo concreto, por ejemplo en el marco de una consultoría de Power Automate.
Por lo general, primero filtras con Filter Array y después remodelas el resultado con Select, porque así Select tiene que procesar menos objetos. Técnicamente el orden también se puede invertir, pero normalmente filtrar primero resulta más claro y algo más económico.
Sí, cada una de las dos acciones cuenta una vez contra el límite de tu flujo, igual que cualquier otra acción. La diferencia con Apply to Each es que siempre se ejecutan como una única acción, independientemente del tamaño del array, mientras que un bucle genera sus propias ejecuciones de acción por cada elemento.
No. Filter Array solo cambia cuántos objetos contiene el array de resultado, no su estructura. Si hay que renombrar, añadir o eliminar campos, de eso se encarga la acción Select.
En ese caso la acción devuelve un array vacío y el flujo continúa sin error. Si quieres comprobar si existen resultados, combinas el resultado con la función length() en una condición posterior.
En arrays muy pequeños y estables con pocas entradas, la ganancia de rendimiento es escasa. En ese caso la ventaja está más en la claridad y el mantenimiento del flujo que en el tiempo de ejecución, lo que sin embargo acaba compensando en cuanto el array crece en producción más de lo previsto inicialmente.
Fundador de NordFlux. Siete años de experiencia, desde la web y el SEO hasta la automatización a escala de grupo, hoy de forma pragmática para las pymes y con soberanía de datos alemana.
Certificaciones
«Auf alle anwenden» procesa listas elemento por elemento y a menudo aparece de forma no intencionada. Como funciona el bucle, por que ralentiza y cuando se puede eliminar.
Límites de Apply to each y paginación en Power Automate: cómo funciona el límite de 100.000 iteraciones y cómo evitarlo.
Tabla de Excel, Aplicar a cada uno, Outlook: así envía Power Automate un correo personal a cada fila de tu lista.
Filter Array y Select sustituyen muchos bucles Apply to each y reducen tanto el consumo de acciones como el tiempo de ejecución, pero elegir correctamente entre ambos enfoques requiere experiencia real con la lógica de los flujos. NordFlux optimiza sus flujos de Power Automate existentes para mejorar el rendimiento y construye los nuevos procesos ahorrando recursos desde el principio. En la primera conversación revisamos sus flujos en busca de bucles innecesarios y le mostramos el potencial de ahorro.