← volver a proyectos
Proyecto

Medallion pipeline en Databricks

Pipeline con arquitectura Medallion (Bronze → Silver → Gold) sobre Databricks Free Edition, desplegado como Infrastructure as Code con Terraform y automatizado vía GitHub Actions. Corriendo en producción y forkeado por otros devs.

Arquitectura
NYC taxi (fuente)
Bronze
Silver
Gold
Validación

Bronze (CTAS) → Silver (MERGE + validación) → Gold (MERGE) → Validación de conteos. Cuatro tasks encadenadas en un solo Job de Databricks, con retries y notificación por email en caso de falla.

Decisiones de ingeniería
Stack
Databricks Terraform GitHub Actions PySpark
Ver repo en GitHub
El problema
Un pipeline de datos reproducible tiene que poder correrse N veces sin duplicar ni perder filas, sin ID natural en la fuente (samples.nyctaxi.trips no trae uno propio), y con errores visibles en vez de silenciosos.
La solución
Bronze vía CTAS (reproducible por diseño), Silver/Gold vía MERGE por una clave sintética (hash determinístico de pickup/dropoff/fare), y una task de validación explícita que chequea silver + rejected == bronze.
Qué evalúa esto
Pregunta típica de entrevistaDónde está la respuesta
¿Cómo parametrizás?job.tfparameter {}, recibido como widgets en cada notebook
¿Cómo garantizás idempotencia?Bronze = CTAS, Silver/Gold = MERGE por clave (trip_id sintético + process_date)
¿Cómo controlás errores?try/except + raise en cada notebook, max_retries en el Job
¿Cómo encontrás fallos?email_notifications on_failure, logs por task en Workflows
¿Cómo testeás?tests/ con pytest + task de validación de conteos en el propio pipeline
¿Cómo manejás secrets?GitHub Secrets → env vars → nunca en el .tf ni en el repo