Filter Array y Select en lugar de Apply to Each en Power Automate
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.
Por qué Apply to Each suele ser el rodeo al filtrar y remodelar
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: crear un subconjunto sin recorrer el array
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:
- La acción puede reducir el número de objetos, pero no puede cambiar la forma de los objetos individuales. Para remodelar necesitas además Select.
- El texto de comparación distingue entre mayúsculas y minúsculas, así que un filtro por abierto no encontrará ningún objeto con el valor Abierto.
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.
La acción Select: reestructurar datos sin bucle
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.
Ejemplo práctico: combinar Filter Array y Select
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.
Dónde Apply to Each sigue siendo la elección correcta
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.
Preguntas frecuentes
¿Puedo usar Filter Array y Select en cualquier orden?
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.
¿Filter Array y Select también cuentan contra el límite de acciones de Power Automate?
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.
¿Puede Filter Array también cambiar la forma de los objetos de un array?
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.
¿Qué ocurre si Filter Array no encuentra ningún elemento coincidente?
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.
¿Merece la pena pasar de Apply to Each a Filter Array y Select también en arrays pequeños?
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.
NordFlux UG (haftungsbeschränkt)
NordFlux crea empleados digitales para las organizaciones: automatizaciones y agentes KI que asumen el trabajo repetitivo. Usted mantiene el control.
¿Preguntas concretas sobre automatización o IA?
En un análisis inicial gratuito hablamos directamente de su caso. Sin compromiso.