🟢 Introducción
En muchos flujos de Power Automate recibimos listas completas de datos: registros de SharePoint, filas de Excel, respuestas de APIs, arrays de Parse JSON, etc.
Pero casi siempre necesitamos quedarnos solo con algunos elementos basados en una condición. Para eso existe la acción Filter array, una de las más potentes dentro de las operaciones de datos.
Con ella puedes limpiar, reducir y transformar un conjunto de datos antes de procesarlo en otras acciones del flujo.
🧠 Qué es / para qué sirve
La acción Filter array permite:
- Filtrar un conjunto de valores en forma de array (lista).
- Aplicar condiciones avanzadas (comparaciones, lógica, texto, números).
- Quedarse solo con los elementos que cumplen ciertos criterios.
- Integrarse con Apply to each, Select, Compose, Parse JSON y más.
Es perfecta para escenarios como:
- Filtrar órdenes con estado = “Completado”.
- Quedarse solo con usuarios cuyo correo termina en un dominio.
- Filtrar productos cuyo stock < 10.
- Seleccionar registros con fechas específicas.
🧩 Sintaxis / Configuración
Aunque es visual, la configuración sigue una estructura clara:
- From (De):
Es el array que deseas filtrar.
Ejemplos típicos:body('Get_items')?['value']outputs('Parse_JSON')variables('MiArray')
- Choose value → Expression:
Aquí defines la condición.
Algunos ejemplos:
item()?['Status'] is equal to 'Activo'
contains(item()?['Email'], '@contoso.com')
item()?['Price'] > 100
El resultado es un array filtrado que puede usarse en otras acciones.
💻 Ejemplos con código
🔹 Ejemplo 1 — Filtrar órdenes completadas
From:
body('Get_items')?['value']
Condition:
item()?['Estado'] is equal to 'Completado'
Resultado → Solo las órdenes con estado Completado.
🔹 Ejemplo 2 — Filtrar correos que terminan en @empresa.com
From:
outputs('Parse_JSON')
Condition:
endsWith(item()?['Email'], '@empresa.com')
🔹 Ejemplo 3 — Filtrar productos con precio mayor a 100
item()?['Precio'] > 100
Esto permite enviar solo esos productos a una acción posterior como Apply to each.
🔹 Ejemplo 4 — Filtrar fechas posteriores a hoy
item()?['FechaEntrega'] > utcNow()
(Ajustando formato de fecha según el origen de datos.)
🧱 Buenas prácticas
✅ Si vas a filtrar información grande, usa directamente Filter array antes de un Apply to each para mejorar rendimiento.
✅ Dale nombres claros a las acciones:FilterArray_ProductosBajoStock,FilterArray_UsuariosActivos, etc.
✅ Verifica que los campos utilizados en la condición existan en todos los elementos del array (si no, usa item()?['campo']).
✅ Para datos complejos, considera usar Parse JSON antes para facilitar expresiones.
✅ Valida el resultado filtrado usando una acción Compose antes de continuar.
⚠️ Errores comunes
🚫 Filtrar arrays sin antes revisar su estructura → causa errores como “The template action failed because…”
🚫 Usar item()['campo'] sin ? → falla cuando el elemento no tiene ese campo.
🚫 Filtrar listas muy grandes provenientes de Excel → puede causar demoras importantes (API limitada).
🚫 Hacer un filtro dentro de un Apply to each innecesariamente → mayor costo de ejecución.
🚫 No considerar que las comparaciones son sensibles al tipo (texto vs número vs booleano).
🔄 Variantes o alternativas
- Select: transforma un array en otra forma (ideal después de filtrar).
- Condition: para validaciones simples que no involucran arrays completos.
- Apply to each: recorre elementos, aunque no filtra por sí mismo.
- Trigger Conditions: si deseas filtrar antes de que el flujo incluso inicie.
- Queries directas en conectores (SharePoint, Dataverse):
Mejor usar OData (?$filter=) si solo necesitas traer datos ya filtrados.

Deja un comentario