Pipeline de Datos en GCP (Airflow + dbt + BigQuery)

¿cómo se ve un pipeline de datos en gcp?

DAG tipo ETL en Airflow (extract → transform → load)
vista rápida: un DAG de Airflow orquesta extract → transform → load.

glosario rápido

Pipeline: secuencia orquestada para extraer, transformar y cargar datos hacia BigQuery.

Airflow / Cloud Composer: orquestador (DAGs, scheduling, retries, alertas).

dbt: transforma con SQL modular (linaje, tests, docs) ejecutando sobre BigQuery.

BigQuery: data warehouse serverless (particiones, clustering, MVs, UDFs).

airflow (cloud composer) — orquestación

Define DAGs, agenda corridas, maneja retries y alertas. En Composer 2 corres operadores como PythonOperator y BigQueryInsertJobOperator y puedes aislar transformaciones complejas en pods con KubernetesPodOperator.

  • Scheduling: cron o presets (@hourly, @daily).
  • Retries: evita fallos transitorios (API, cuotas) con backoff.
  • Alertas: email, Slack, Opsgenie via notifiers.

cheat-sheet de operadores comunes

  • PythonOperator: llamadas a APIs, manipulación con pandas.
  • BigQueryInsertJobOperator: ejecutar SQL (DDL/DML), particiones, MVs.
  • BigQueryInsertJobOperator (load): cargas desde GCS.
  • KubernetesPodOperator: corre contenedores (dbt, spark, libs nativas).

dbt en bigquery (sql productivo + linaje)

Con dbt modelas con SQL y yml (fuentes, tests, docs). Compila y ejecuta sobre BigQuery; te deja linaje y documentación navegable.

orquestar dbt desde airflow

Empaqueta tu proyecto y ejecútalo en un contenedor con Composer:

transformación: python o sql directo en bq

ejemplo de dag (visual)

ETL sencillo en Composer con PythonOperator
etl sencillo: extract → transform → load en composer.

capa de negocio en bigquery

  • Particiones por fecha (ingest o evento) para minimizar escaneo.
  • Clustering por user_id / claves de join para acelerar consultas.
  • Materialized Views para agregados frecuentes.
  • Access control con authorized views o tablas por dominio.

buenas prácticas (lo que más duele en la vida real)

  • Costos BigQuery: siempre particiona y usa SELECT columnas (evita *); activa límites por job.
  • Calidad: tests en dbt + freshness. Notifica fallos del DAG.
  • Versionado: proyecto dbt y DAGs en Git; CI con dbt build en PR.
  • Entornos: datasets por ambiente (raw_dev, mart_dev, …) + variables/Connections en Composer.
  • Observabilidad: métricas de run, duración, volumen procesado; logs en GCS/Cloud Logging.

checklist para empezar

  1. Crear proyecto en GCP y habilitar BigQuery + Composer.
  2. Definir datasets: raw, stg, mart.
  3. Subir primer DAG con PythonOperator + BigQueryInsertJobOperator.
  4. Inicializar dbt (perfil BigQuery) y modelar primeras stg_*.
  5. Orquestar dbt run desde Composer (KPO o BashOperator).
  6. Agregar tests y alerts. Particionar/clusterizar tablas de negocio.