dbt (data build tool) es la herramienta de referencia para transformar datos dentro del data warehouse aplicando prácticas de ingeniería de software. Creada por dbt Labs (antes Fishtown Analytics), dbt permite a analytics engineers y data engineers construir, testear, versionar y documentar pipelines de transformación escritos en SQL con Jinja bajo el paradigma ELT (Extract, Load, Transform). Equipos de datos de empresas como JetBlue, HubSpot, GitLab y Shopify usan dbt como pieza central de su plataforma analítica.
La plataforma se ofrece en dos ediciones complementarias. dbt Core es el motor open source que se instala con pip install dbt-<adaptador> y se ejecuta desde la línea de comandos con dbt run, dbt test y dbt build. dbt Cloud es la plataforma gestionada con IDE web, scheduling, CI/CD, observabilidad y dbt Explorer para navegar el linaje y la documentación en producción; incorpora además el Fusión compiler escrito en Rust, un compilador nativo de alto rendimiento que sustituye el compilador histórico en Python para cargas grandes. Ambos comparten el mismo lenguaje de proyecto (modelos, macros, snapshots, seeds, sources, exposures) y los mismos adaptadores para Snowflake, Databricks, BigQuery, Redshift, PostgreSQL y otros warehouses.
dbt opera sobre la capa de transformación: herramientas EL como Fivetran, Airbyte o Stitch cargan los datos crudos en el warehouse, y dbt se encarga de la T mediante modelos SQL que se materializan como vistas, tablas, modelos incrementales o efímeros. Los modelos se organizan en capas staging, intermediate y marts, se testean con tests genéricos (unique, not_null, accepted_values, relationships), tests singulares, unit tests nativos (estables desde dbt 1.8) y data tests del ecosistema (dbt_expectations, Elementary), y se documentan automáticamente con dbt docs generate, que produce el DAG de linaje que consume dbt Explorer. Los snapshots implementan SCD Type 2 sobre tablas mutables, los hooks ejecutan operaciones auxiliares antes y después de los modelos, y las exposures declaran los consumidores aguas abajo (dashboards, aplicaciones, informes) para cerrar el contrato entre el equipo de datos y el negocio.
A partir de dbt 1.9 el proyecto incorpora piezas clave para plataformas multi-equipo: dbt Mesh, que permite dividir el código en varios proyectos interconectados por ref() cruzados con access público, privado o protegido; model versioning y access contracts, que fijan el esquema expuesto de un modelo y versionan los cambios incompatibles; constraints declarativas (primary key, foreign key, not null, check) ejecutadas por el warehouse; modelos Python que permiten escribir transformaciones en Python sobre Snowflake, Databricks o BigQuery cuando SQL se queda corto; y el Semantic Layer con MetricFlow, que centraliza las definiciones de métricas y las expone a herramientas de BI mediante una API consistente. El ecosistema de paquetes (dbt_utils, dbt_expectations, dbt_date, Elementary) y las integraciones nativas con Fivetran, Airbyte, Snowflake, Databricks y BigQuery consolidan a dbt como el estándar para gobernar la lógica de transformación en la plataforma de datos moderna.
Este itinerario recorre dbt de principio a fin: desde los fundamentos del paradigma ELT y la instalación del entorno hasta el despliegue en producción con CI/CD, pasando por los modelos SQL, tests, documentación, macros con Jinja, seeds, sources, funcionalidades avanzadas como modelos incrementales, snapshots y unit tests, y las buenas prácticas de operación empresarial con dbt Mesh y Semantic Layer.
Qué incluye este itinerario
- Fundamentos: qué es dbt, ELT vs ETL, analytics engineering, dbt Core vs dbt Cloud con Fusión compiler, y arquitectura de un proyecto.
- Instalación y entorno: setup con pip, Docker, dbt Cloud, profiles.yml y conexión a BigQuery, Snowflake, PostgreSQL, Redshift y Databricks.
- Modelos SQL y Python: concepto de modelo, ref(), source(), materializations (table, view, incremental con estrategias merge e insert_overwrite, ephemeral), modelos Python y capas staging, intermediate y marts.
- Tests y documentación: tests genéricos (unique, not_null, accepted_values, relationships), tests singulares, unit tests nativos, schema.yml, constraints, model contracts y generación de docs con dbt Explorer.
- Macros y Jinja: templating con Jinja, macros reutilizables, paquetes del ecosistema (dbt_utils, dbt_expectations, dbt_date, Elementary) y macros avanzadas con dispatch y adapters.
- Seeds y sources: carga de CSV con seeds, declaración de sources con integración EL (Fivetran, Airbyte), freshness checks y testing en origen.
- Funcionalidades avanzadas: modelos incrementales, snapshots (SCD Type 2), hooks, custom materializations, exposures, model versioning y dbt Mesh multi-proyecto.
- Producción y CI/CD: dbt Cloud jobs, CI/CD con GitHub Actions, Slim CI con state:modified y defer, gestión de entornos dev, staging y production, Semantic Layer con MetricFlow y buenas prácticas de despliegue.
Público objetivo
- Analytics Engineers que transforman datos en el data warehouse para equipos de negocio y analítica.
- Data Engineers que construyen y mantienen pipelines de transformación en plataformas de datos modernas.
- Analistas de datos que quieren aplicar prácticas de software engineering a sus consultas SQL.
- Ingenieros de software que trabajan con data warehouses y buscan una herramienta estándar de transformación.
- Data Architects que diseñan capas de datos (staging, intermediate, marts) en entornos empresariales.
- Profesionales IT en transición hacia roles de analytics engineering o data engineering.
Prerrequisitos
Conocimientos de SQL a nivel intermedio (SELECT, JOINs, GROUP BY, CTEs, funciones de ventana). Es recomendable tener familiaridad básica con la terminal o línea de comandos, Git para control de versiones y conceptos generales de data warehousing. Para módulos avanzados, se valorarán conocimientos de Jinja o Python y experiencia con al menos un data warehouse (BigQuery, Snowflake, PostgreSQL o Redshift).