[{"data":1,"prerenderedAt":29},["ShallowReactive",2],{"article-data-curso-gcp-cloud-composer-04":3},{"content":4,"date":5,"image":6,"sideArticles":7},"\u003C!DOCTYPE html>\r\n\u003Chtml lang=\"es\">\r\n\r\n\u003Chead>\r\n    \u003Cmeta charset=\"UTF-8\">\r\n    \u003Cmeta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    \u003Cmeta name=\"description\"\r\n        content=\"Aprende a implementar lógica de decisión en tus DAGs de Airflow. Domina el BranchPythonOperator y la transformación de datos en BigQuery mediante SQL profesional.\">\r\n    \u003Cmeta name=\"keywords\"\r\n        content=\"Cloud Composer, Airflow Branching, BigQuery, Data Quality, SQL, Data Engineering, BranchPythonOperator, Google Cloud\">\r\n    \u003Cmeta name=\"author\" content=\"Eduardo Martínez Agrelo\">\r\n    \u003Ctitle>Cloud Composer: Transformación y Branching | Curso Composer GCP\u003C/title>\r\n    \u003Cstyle>\r\n        body {\r\n            font-family: sans-serif;\r\n            line-height: 1.6;\r\n        }\r\n\r\n        h1,\r\n        h2,\r\n        h3 {\r\n            color: #333;\r\n        }\r\n\r\n        ul {\r\n            list-style-type: disc;\r\n            margin-left: 20px;\r\n        }\r\n\r\n        code {\r\n            background-color: #f4f4f4;\r\n            padding: 2px 5px;\r\n            border-radius: 3px;\r\n            font-family: monospace;\r\n        }\r\n    \u003C/style>\r\n\u003C/head>\r\n\r\n\u003Cbody>\r\n    \u003Ch1>Cloud Composer: Transformación y Branching (Calidad del Dato)\u003C/h1>\r\n    \u003Cp>\u003Cstrong>Autor:\u003C/strong> \u003Ca href=\"https://www.youtube.com/@EduardoMartinezAgrelo\" target=\"_blank\">Eduardo Martínez\r\n            Agrelo\u003C/a>\u003C/p>\r\n\r\n    \u003Cp>En los laboratorios anteriores logramos ingestar datos crudos en BigQuery. Sin embargo, en un entorno productivo,\r\n        no podemos permitir que datos erróneos o incompletos contaminen nuestros informes finales. Un Data Engineer debe\r\n        construir tuberías inteligentes capaces de tomar decisiones: si los datos son correctos, transformamos; si no,\r\n        alertamos. A esto lo llamamos \u003Cstrong>Branching\u003C/strong>.\u003C/p>\r\n\r\n    \u003Ch2>¿Por qué usar Branching?\u003C/h2>\r\n\r\n    \u003Cp>El branching (o ramificación) permite que el grafo de Airflow tome caminos diferentes en tiempo de ejecución\r\n        basados en condiciones lógicas:\u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Validación de Calidad:\u003C/strong> Comprobar si hay nulos, si los formatos son correctos o si el número\r\n            de registros es sospechosamente bajo.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Ahorro de Cómputo:\u003C/strong> Evitamos ejecutar transformaciones pesadas y costosas sobre datos que\r\n            sabemos que están corruptos.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Gestión de Alertas:\u003C/strong> Podemos dirigir el flujo hacia tareas de notificación (Slack, Email) de\r\n            forma automática ante anomalías.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>El BranchPythonOperator\u003C/h2>\r\n\r\n    \u003Cp>Este operador es el encargado de decidir qué tarea sigue a continuación. Su funcionamiento se basa en una función\r\n        de Python que devuelve el \u003Ccode>task_id\u003C/code> del siguiente paso:\u003C/p>\r\n    \u003Cp>\u003Ccode>return 'tarea_exitosa' if calidad_ok else 'tarea_error'\u003C/code>\u003C/p>\r\n    \u003Cp>Es vital que el DAG esté configurado con las reglas de activación (trigger rules) adecuadas, como\r\n        \u003Ccode>none_failed_min_one_success\u003C/code>, para permitir que el flujo continúe correctamente tras una\r\n        bifurcación.\r\n    \u003C/p>\r\n\r\n    \u003Ch2>Transformación SQL en BigQuery\u003C/h2>\r\n\r\n    \u003Cp>Una vez que los datos han pasado el filtro de calidad, procedemos a la \"T\" del proceso ELT. Utilizaremos el\r\n        \u003Cstrong>BigQueryInsertJobOperator\u003C/strong> para ejecutar sentencias SQL directamente en el motor de Google:\r\n    \u003C/p>\r\n    \u003Cul>\r\n        \u003Cli>\u003Cstrong>Agregaciones:\u003C/strong> Sumar ventas, promediar precios o contar usuarios activos por región.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Modelado:\u003C/strong> Crear tablas finales optimizadas para herramientas de visualización como Looker o\r\n            Power BI.\u003C/li>\r\n        \u003Cli>\u003Cstrong>Eficiencia:\u003C/strong> La transformación ocurre dentro de BigQuery, aprovechando su arquitectura\r\n            distribuida sin mover datos por la red.\u003C/li>\r\n    \u003C/ul>\r\n\r\n    \u003Ch2>Implementación práctica\u003C/h2>\r\n\r\n    \u003Cp>En este laboratorio, crearemos un DAG que simula una validación de calidad aleatoria. Verás cómo, dependiendo del\r\n        resultado, Airflow marca una rama como \"Skipped\" (omitida) y activa la otra. Configuraremos una consulta SQL que\r\n        agrupará nuestras ventas por producto y calculará ingresos totales, dejando el Data Warehouse listo para el\r\n        consumo de negocio. Observarás en la interfaz de Airflow cómo el grafo se ilumina dinámicamente según el camino\r\n        elegido.\u003C/p>\r\n\r\n    \u003Ch2>Conclusión: De orquestador a gestor inteligente\u003C/h2>\r\n    \u003Cp>Has elevado el nivel de tus pipelines. Ya no solo mueves datos, sino que aseguras su integridad y los transformas\r\n        en información valiosa. Con esto cerramos el bloque de procesamiento Batch. Prepárate, porque a partir del\r\n        próximo laboratorio, abandonaremos la tranquilidad de los lotes programados para entrar en el frenético mundo\r\n        del Streaming en tiempo real.\u003C/p>\r\n\u003C/body>\r\n\r\n\u003C/html>","April 15, 2026","https://storage.googleapis.com/mp-blog/images/curso-gcp-cloud-composer-04.jpg",[8,14,19,24],{"id":9,"title":10,"description":11,"image":12,"date":13},"curso-gcp-apache-spark-01","Spark: Infraestructura como Código con Terraform | Curso Spark, Scala y Terraform","Aprende a desplegar clústeres de Big Data profesionalmente. Domina Terraform para crear infraestructura como código (IaC) en Google Cloud y automatiza tu entorno de Dataproc para Spark.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-01.jpg","March 12, 2026",{"id":15,"title":16,"description":17,"image":18,"date":13},"curso-gcp-apache-spark-02","Spark: Ingesta (Raw to Bronze) y Formatos Columnares | Curso Spark, Scala y Terraform","Domina la ingesta de datos con Spark. Aprende a convertir JSONs pesados en formato Parquet, optimiza tu almacenamiento en un 85% y domina los esquemas estrictos con Scala.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-02.jpg",{"id":20,"title":21,"description":22,"image":23,"date":13},"curso-gcp-apache-spark-03","Spark: Limpieza y Calidad (Bronze to Silver) | Curso Spark, Scala y Terraform","Domina la limpieza de datos en Spark. Aprende a usar Scala para implementar la capa Silver (Plata) de tu arquitectura Medallón, utilizando Case Classes para mayor seguridad.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-03.jpg",{"id":25,"title":26,"description":27,"image":28,"date":13},"curso-gcp-apache-spark-04","Spark: Analítica Avanzada (Silver to Gold) | Curso Spark, Scala y Terraform","Domina el Análisis Avanzado con Spark. Aprende a calcular métricas de negocio con Window Functions y a extraer el Top 3 de canciones por país y día para tu capa Gold.","https://storage.googleapis.com/mp-blog/images/curso-gcp-apache-spark-04.jpg",1776363704139]