Antes de comenzar
Este ejercicio utiliza dos fuentes: transacciones y catálogo de clientes. El resultado debe sumar únicamente transacciones aprobadas por región. Prepara un runtime que admita dos entradas y Join; el adaptador genérico de streaming lineal no ejecuta ese grafo. Ambos archivos deben estar disponibles mediante bindings autorizados.
Usa las tablas pequeñas de este capítulo, sin descargar paquetes antiguos. Antes de diseñar, confirma la unicidad de customer_id en clientes: duplicados pueden multiplicar filas y aumentar el total.
Procedimiento
- Crea una entrada TXT delimitada por
|concustomer_id,amount,status. En Flat File input seleccionaformat=txt,delimiter=|,hasHeader=true. - Crea un Excel con hoja Customers y cabecera
customer_id,region. En Excel input selecciona esa hoja, cabecera en fila 1 y datos desde fila 2. - Convierte
customer_idaintegeren ambas ramas. En transacciones convierteamountanumberconoutputField=amount_numberyonError=fail. - En la rama de clientes, limpia
regioncontrimyupper. En transacciones, filtrastatus=APPROVEDcon Row filter. - Une ambas ramas mediante Join
inner: transacciones a la izquierda, clientes a la derecha; clavescustomer_id,keyType=integer,nullsEqual=false. Selecciona los identificadores reales de los componentes conectados. - Agrupa por
region:metric=sum,field=amount_number,outputField=total. Ordena portotaldescendente y seleccionaregion,totalantes del destino CSV.
Ejemplo sintético
Transacciones:
customer_id|amount|status
1|10|APPROVED
1|5|APPROVED
2|7|APPROVED
2|99|REJECTED
Filas de la hoja Customers:
customer_id,region
1,NORTH
2,SOUTH
Resultado esperado:
region,total
NORTH,15.0
SOUTH,7.0
La representación textual del número puede variar según el formato numérico; comprueba los totales numéricos 15 y 7 y el orden configurado.
Comprobar el resultado
Calcula el resultado de forma independiente: ignora la fila REJECTED y suma 10+5 para NORTH y 7 para SOUTH. Espera dos filas y exactamente dos columnas. Confirma que el Join encontró todos los identificadores aprobados y no expandió filas por duplicados. Guarda y publica el Mapping aceptado, configura ambos bindings en la Session y ejecuta un Workflow de laboratorio.
Group aggregate devuelve solo claves de agrupación y métrica; no conserva el detalle original de cada transacción.
Resolver problemas
Si faltan regiones, revisa tipos de claves, datos no coincidentes y tipo de Join. Si los totales aumentan, revisa duplicados en el catálogo. Si una región aparece separada por espacios o mayúsculas, revisa Clean text antes del agregado. Un error de streaming puede ser incompatibilidad de topología, no un dato incorrecto. Para importes reales define precisión, moneda y redondeo por separado; este ejemplo no establece una política contable.