Arquitectura típica de un pipeline ELT con dbt y BigQuery
El patrón que suelo usar separa responsabilidades en capas. En base (o staging) se carga cada fuente casi tal cual, con nombres homogéneos, tipos corregidos y poco más: es la frontera entre el mundo exterior y el tuyo. En core se modelan las entidades del negocio —clientes, transacciones, productos— con reglas, deduplicación y claves bien definidas. En marts se construyen las tablas listas para cada uso: un cuadro de mando, un modelo predictivo o una exportación. Cada capa tiene sus tests y su documentación, y las dependencias entre modelos las gestiona dbt.
Validación de datos como parte del diseño
Los tests no son un añadido final. Desde el primer modelo defino pruebas de unicidad y no nulos en las claves, relaciones entre tablas y reglas de negocio (por ejemplo, que un importe no sea negativo salvo devoluciones). Añado comprobaciones de frescura para detectar fuentes que han dejado de llegar y, cuando es posible, concilio totales con el sistema de origen. Los fallos generan avisos concretos en lugar de informes silenciosamente erróneos.
Orquestación, coste y rendimiento
Para ejecutar los pipelines de forma programada utilizo Airflow cuando el proyecto tiene dependencias suficientes para justificarlo; para necesidades más simples, una programación sencilla basta. En BigQuery, gran parte del ahorro viene de tres decisiones: consultar solo las columnas necesarias, particionar y agrupar las tablas grandes según cómo se filtran y evitar reconstrucciones completas cuando una carga incremental es suficiente.
Experiencia relacionada
He trabajado con SQL, dbt y BigQuery en un equipo de analítica de una fintech (descrito a alto nivel por confidencialidad) y mantengo un laboratorio personal con más de 250 000 transacciones sintéticas que ilustra la organización por capas, los tests y la orquestación. Lo encontrarás en proyectos.