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

  1. From (De):
    Es el array que deseas filtrar.
    Ejemplos típicos:
    • body('Get_items')?['value']
    • outputs('Parse_JSON')
    • variables('MiArray')
  2. 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.

📚 Recursos oficiales (verificados)

Deja un comentario

¡Gracias por tu mensaje!

Me pondré en contacto tan rápido como pueda.

Descubre más desde Power Platform En Español

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo