Módulo 4: Merge Avanzado y Fan-Out / Fan-In

Merge: Los 4 Modos Profundizados

Descripción de la cápsula

En G1-M07-04 viste los 4 modos del Merge (Append, Combine, Multiplex, Wait). Esta cápsula los profundiza con escenarios reales, cuándo cada uno es la elección correcta, los edge cases de cada modo, y los trade-offs de performance entre ellos.

Saber cuál modo en cada caso es la diferencia entre un workflow que funciona "casi" y uno que funciona siempre sin sorpresas.


Lo que vas a aprender

  • Dominar los 4 modos: Append, Combine, Multiplex, Wait
  • Distinguir sub-modos de Combine (Inner, Enrich, Keep Non-Matches)
  • Aplicar el modo correcto según necesidad
  • Resolver casos edge (campos faltantes, duplicados, tipos distintos)

Modo 1: Append (concatenar listas)

Qué hace: une items de Input 1 e Input 2 en una sola lista. No matchea ni junta — solo concatena.

Input 1: [A, B, C]
Input 2: [D, E]
Output:  [A, B, C, D, E]

Cuándo usar

  • Combinar resultados de 2 búsquedas distintas sin necesidad de matchear
  • Acumular items de fuentes parecidas
  • Listas independientes que solo necesitas juntar

Ejemplo real

Procesar leads de Sheet y leads del CRM en el mismo workflow:

[Sheet read leads] ──┐
                     ├─→ [Merge: Append] → [enviar a Slack todos juntos]
[CRM API read leads]─┘

Ambas fuentes producen leads. Append los junta para procesar uniformemente.

Edge cases

  • Items con estructuras distintas: Append los junta de todos modos. El output tiene items mixtos — siguiente nodo debe manejarlo.
  • Duplicados: Append no dedupa. Si lead "Mike" está en Sheet y CRM, sale 2 veces.

Modo 2: Combine (SQL JOIN)

Qué hace: matchea items de Input 1 con Input 2 por un campo común, los combina en items unidos.

Sub-modos

Inner Join (Keep Matches Only)

Solo items que matchean en ambos inputs.

Input 1: [{ id: 1, name: "Mike" }, { id: 2, name: "Ana" }]
Input 2: [{ id: 1, email: "m@x.com" }, { id: 3, email: "l@y.com" }]

Inner Join → [{ id: 1, name: "Mike", email: "m@x.com" }]

Solo id: 1 está en ambos. El resto se descarta.

Enrich Input 1 (Left Join)

Todos los items de Input 1, enriquecidos con datos de Input 2 si hay match.

Output: [
  { id: 1, name: "Mike", email: "m@x.com" },
  { id: 2, name: "Ana", email: null }
]

Mike y Ana del Input 1, Mike con email, Ana sin (no había match).

Keep Non-Matches Only

Items que no matchean. Útil para detectar diferencias.

Output: [
  { id: 2, name: "Ana" },          // estaba en Input 1, no en Input 2
  { id: 3, email: "l@y.com" }     // estaba en Input 2, no en Input 1
]

Cuándo usar Combine

  • Sheet leads + CRM data: Enrich con datos del CRM
  • Detectar leads "huérfanos": Keep Non-Matches → leads en CRM que no están en Sheet
  • Validar consistencia: Inner Join entre 2 fuentes que deberían matchear

Edge cases

  • Campos con nombres distintos: Combine soporta mapear (Input 1 field: id, Input 2 field: lead_id)
  • Tipos distintos: "1" (string) ≠ 1 (number). Normalizar antes
  • Múltiples matches: si Input 2 tiene 3 items con id: 1, qué hace Combine depende del modo

Modo 3: Multiplex (producto cartesiano)

Qué hace: combina cada item de Input 1 con cada item de Input 2. Si A tiene 3 y B tiene 4, output tiene 12.

Input 1: [A, B]
Input 2: [X, Y, Z]
Output:  [
  AX, AY, AZ,
  BX, BY, BZ
]

Cuándo usar

  • Generar combinaciones: crear emails a "cada cliente × cada plantilla"
  • Producto matemático: raramente útil en business workflows

Edge cases

  • Volumen explosivo: 100 × 100 = 10,000 items. Cuidado con memoria
  • Resultados duplicados: combinaciones idénticas no se dedupan

Modo 4: Wait (sincronización)

Qué hace: espera a que ambos inputs lleguen, después continúa el flujo con ambos. No combina datos — sincroniza tiempo.

                    ┌─→ [API A: tarda 3s] ──┐
[Trigger] ─────────►┤                        ├─→ [Merge: Wait] → [continuar]
                    └─→ [API B: tarda 5s] ──┘
                                              ↑
                                              espera 5s hasta que ambas terminen

Después del Merge, los datos siguen disponibles como input items separados (no fusionados).

Cuándo usar

  • Esperar a múltiples fuentes antes de generar reporte
  • Sincronizar ramas paralelas
  • No quieres continuar hasta que todo termine

Edge cases

  • Una rama falla: Wait puede colgar. Considerar Continue On Fail en las ramas.
  • Tiempos muy distintos: Wait toma el tiempo de la rama más lenta.

Decisión: cuál modo en cada caso

NecesidadModo
Juntar listas (sin matchear)Append
Unir por ID común (todos)Combine Enrich
Solo los que coincidenCombine Inner
Solo los que NO coincidenCombine Keep Non-Matches
Generar todas las combinacionesMultiplex (raro)
Esperar a 2+ ramas paralelasWait

Trampas comunes

Trampa 1: Combine con campos de tipos distintos

Qué pasa: Sheets devuelve id: "1" (string), API devuelve id: 1 (number). Combine no encuentra match.

Cómo evitar: Set previo que normaliza: id_num: Number($json.id).


Trampa 2: Append cuando esperabas Combine

Qué pasa: Tienes 2 fuentes con el mismo ID, esperabas 1 item enriquecido. Usaste Append → tienes 2 items separados.

Cómo evitar: Si quieres combinar campos, Combine. Si solo concatenar, Append.


Trampa 3: Multiplex sin querer

Qué pasa: Eliges Multiplex creyendo que es Append. 10 × 10 = 100 items inesperados.

Cómo evitar: Default debería ser Append; Multiplex solo cuando explícitamente quieres producto cartesiano.


Trampa 4: Wait con una rama que nunca llega

Qué pasa: Wait espera 2 inputs. Una rama falla silenciosamente (Continue on Fail). Wait nunca termina.

Cómo evitar: Asegurar que cada rama siempre produce output, aún en error. Default values con Set.


Ejercicio: identificar modo

Para cada caso, ¿qué modo usar?

  1. Quiero combinar leads del Sheet y del API usando email común
  2. Quiero todos los leads, sin importar fuente (Sheet o CRM)
  3. Quiero detectar emails que existen en Sheet pero no en CRM
  4. Quiero esperar a que 3 APIs respondan antes de generar reporte
Respuestas
  1. Combine Inner Join (solo los que están en ambos) o Enrich (todos del primero + datos del segundo si hay match)
  2. Append
  3. Combine Keep Non-Matches del Sheet vs CRM
  4. Wait

Resumen y siguiente paso

  • Append: concatenar listas independientes
  • Combine: SQL JOIN — Inner (solo matches), Enrich (todos + match), Keep Non-Matches (solo diff)
  • Multiplex: producto cartesiano (raro)
  • Wait: sincronización temporal
  • 4 trampas: tipos distintos, Append vs Combine confundido, Multiplex inesperado, Wait con rama colgada

Lo que sigue: Patrón "Combinar fuentes con Combine" — el caso más útil en práctica.


Creado: Mayo 11, 2026 Versión: 1.0