que.nom.es

dbt (data build tool): qué es y por qué es estándar en data engineering

Ingeniería de datos intermedio También llamado: data build tool, dbt-core, dbt Cloud
dbt: cada modelo es un SELECT en SQL con Jinja que referencia a otros con ref(); dbt deduce el DAG, lo compila y lo ejecuta dentro del warehouse, junto con tests y documentación.
dbt: cada modelo es un SELECT en SQL con Jinja que referencia a otros con ref(); dbt deduce el DAG, lo compila y lo ejecuta dentro del warehouse, junto con tests y documentación.

dbt (data build tool)

¿Qué es?

dbt (data build tool) es la herramienta open-source que se ha convertido en estándar de facto para la capa de transformación en stacks ELT modernos. Permite escribir transformaciones de datos como código SQL versionado en git, con tests, documentación y dependencias gestionadas.

Existe en dos sabores:

  • dbt Core (open source, gratuito): el motor que ejecuta las transformaciones.
  • dbt Cloud (SaaS de pago): UI web, scheduler, IDE en el navegador, observabilidad.

Por qué cambió la forma de hacer data engineering

Antes de dbt, las transformaciones SQL vivían como queries dispersas en herramientas BI, vistas creadas a mano en el DW, o dentro de un ETL gráfico difícil de versionar. dbt aportó al data engineering las prácticas del software engineering:

  • Código versionado en git (PRs, code review, rollbacks).
  • Tests automáticos sobre los datos (unique, not_null, custom).
  • Documentación generada desde el propio código.
  • DAG implícito: dbt detecta dependencias entre modelos por las referencias ref() y los ejecuta en orden.
  • Reusabilidad: macros y paquetes (dbt-utils, dbt-expectations).

Cómo funciona

Un modelo dbt es un fichero SQL del tipo:

-- models/marts/dim_customer.sql
SELECT
    customer_id,
    first_name,
    last_name,
    DATE(created_at) AS signup_date
FROM {{ ref('stg_crm_customers') }}
WHERE deleted_at IS NULL

Al ejecutar dbt run, dbt:

  1. Compila el SQL sustituyendo ref() por el nombre real de la tabla/vista.
  2. Resuelve las dependencias entre modelos.
  3. Crea/actualiza la tabla o vista correspondiente en el data warehouse.

Ejemplo de proyecto típico

mi_proyecto_dbt/
├─ models/
│  ├─ staging/      # 1:1 con las fuentes (E+L de Fivetran/Airbyte)
│  ├─ intermediate/ # joins y reglas comunes
│  └─ marts/        # tablas finales para BI (dim_*, fact_*)
├─ tests/           # tests genéricos y custom
├─ macros/          # SQL reutilizable
└─ dbt_project.yml

Cuándo dbt es la elección obvia

  • Stack moderno con DW cloud (Snowflake, BigQuery, Redshift, Databricks).
  • Equipo que mezcla analistas con conocimientos SQL y data engineers.
  • Necesidad de modelo dimensional limpio sobre datos crudos cargados con ELT.

Cuándo NO es la mejor opción

  • Stack 100% on-prem con DW legacy (puede usarse, pero pierde parte del valor).
  • Transformaciones que requieren lógica imperativa compleja (Python, ML): combinar dbt con Airflow/Dagster.
  • Pipelines de streaming de baja latencia: dbt es batch.

Más información

Contenido elaborado con asistencia de inteligencia artificial — Equipo Editorial Dataprix. Verifica la información antes de tomar decisiones.