Dataflow: Transformaciones Avanzadas y Branching
Autor: Eduardo Martínez Agrelo
En el laboratorio anterior, vimos transformaciones básicas (Map). Sin embargo, en un escenario real de ingeniería de datos, las reglas de negocio son complejas: necesitamos clasificar, filtrar y derivar flujos de datos. En este laboratorio, aprenderemos a realizar Branching (bifurcación) para manejar alertas críticas en tiempo real mientras mantenemos el flujo de datos principal.
Map vs ParDo: El corazón de Apache Beam
Aunque beam.Map es útil para operaciones simples de 1 a 1, no es suficiente para la lógica empresarial pesada. Aquí es donde entra el ParDo (Parallel Do):
- Flexibilidad: Usamos
ParDojunto con una claseDoFn. Esto nos permite definir funciones complejas que pueden filtrar, validar, transformar o incluso conectarse a servicios externos. - Uso de
yield: A diferencia de una función normal que retorna un valor, aquí utilizamosyieldpara generar múltiples salidas o incluso ninguna, actuando como un generador eficiente.
Bifurcación (Branching) y Tagged Outputs
Imagina que el negocio te pide identificar infracciones de velocidad (más de 120 km/h) y guardarlas en un archivo separado de "Alertas Urgentes". El Branching es la técnica que nos permite hacer esto:
- Tagged Outputs: Dentro de nuestra lógica
DoFn, podemos emitir datos a diferentes "canales" utilizando etiquetas (tags). - Paralelismo lógico: Apache Beam toma esos flujos y los convierte en ramas separadas dentro de nuestro Grafo, permitiéndonos escribir en diferentes destinos o realizar transformaciones distintas para cada tipo de evento.
Implementación práctica
En este ejercicio, desarrollaremos una clase DoFn que evalúa la velocidad de nuestros coches eléctricos. Implementaremos la lógica de bifurcación: los datos que cumplen la condición de infracción irán por una "rama" de alertas, mientras que el resto seguirá su camino normal. Al visualizar el grafo en la interfaz de Dataflow, verás cómo un único río de datos se divide en dos caminos paralelos.
Conclusión: Arquitectura de datos inteligente
El Branching es una habilidad fundamental para cualquier Data Engineer. Has aprendido a dividir y conquistar, permitiendo que un mismo pipeline atienda necesidades de negocio divergentes. Ya tienes las herramientas para manejar lógica compleja; en el próximo laboratorio, llevaremos estos datos procesados a su destino final: BigQuery.