Data Engineering
9 min

Introducción a dbt (data build tool)

Trubi

Lucas Trubiano

10 de julio de 2026

Introducción a dbt (data build tool)

dbt™ es una herramienta para transformación de datos que prioriza SQL, y permite a los equipos desplegar rápidamente y de manera colaborativa código analítico siguiendo las mejores prácticas de ingeniería de software como la modularidad, portabilidad, CI/CD y documentación. Con dbt, cualquier persona del equipo de datos puede contribuir de manera segura a la creación de pipelines de datos en producción.

¿Qué es dbt y cómo se utiliza en el contexto de Data Engineering?

dbt (data build tool) es una herramienta de línea de comandos (CLI) que permite a los equipos de ingeniería de datos transformar datos de su data lake o data warehouse directamente utilizando SQL, el lenguaje más comúnmente usado en el análisis de datos. dbt se utiliza para organizar, limpiar, transformar y agregar datos después de que han sido almacenados (una práctica conocida como ELT: Extract, Load, Transform), lo que permite a analistas e ingenieros de datos colaborar y construir flujos de trabajo de transformación de manera más eficiente y con mejores prácticas de ingeniería de software.

En resumen: dbt es la T de un proceso ELT.

Ventajas de dbt vs. herramientas ETL tradicionales

dbt ofrece varias ventajas sobre herramientas ETL tradicionales que realizan extracción, carga y transformación como un proceso integrado:

  • SQL-First Approach: dbt permite que ingenieros y analistas utilicen SQL para definir transformaciones de datos, lo que lo hace accesible para un público más amplio.
  • Modularidad y reutilización: los modelos en dbt se pueden organizar en módulos reutilizables, facilitando la gestión de dependencias y la modularización del código.
  • Pruebas y documentación integradas: dbt facilita la creación de tests para verificar la calidad de los datos y genera documentación automáticamente, ayudando a mantener la calidad y comprensibilidad del warehouse.
  • CI/CD y versionado: es compatible con prácticas de integración continua y despliegue continuo, y se integra fácilmente con sistemas de control de versiones, permitiendo colaboración efectiva y seguimiento de cambios en el tiempo.

Componentes básicos de dbt y arquitectura general

dbt consta de varios componentes clave que juntos facilitan la transformación de datos:

  • Modelos: archivos SQL que representan las transformaciones que se aplicarán a los datos brutos. Pueden depender unos de otros, creando una cadena de transformaciones gestionada por dbt.
  • Tests: dbt permite definir tests que verifican la integridad de los datos, como pruebas de unicidad o no nulidad, asegurando que los datos transformados cumplen con las expectativas.
  • Paquetes: colecciones de modelos, tests y macros que se pueden reutilizar entre proyectos, promoviendo la reutilización de código y la colaboración.
  • Perfiles y proyectos: la configuración de conexión al warehouse y las configuraciones específicas del proyecto se manejan a través de perfiles y archivos de proyecto, permitiendo que dbt sea flexible y adaptable a diferentes entornos.
  • Macros: funciones definidas por el usuario que se pueden utilizar para escribir código SQL reutilizable y parametrizable.

Tip: para profundizar, la documentación oficial de dbt Developer Hub es el mejor punto de partida.

dbt Core (local) vs. dbt Cloud

dbt Core es la versión de código abierto de dbt que se instala y ejecuta localmente en tu máquina o en un servidor. Funciona principalmente como una herramienta de línea de comandos y permite definir transformaciones de datos utilizando SQL, organizándolas en modelos, tests y documentación que se ejecutan y generan mediante comandos específicos de dbt.

  • Costo: gratuito.
  • Flexibilidad: se puede instalar en cualquier entorno que soporte Python.
  • Control: control total sobre el entorno de ejecución y la configuración.
  • Integración: hay que integrarlo manualmente con otros servicios, como sistemas de CI/CD, para automatizar los flujos de trabajo.

dbt Cloud es una plataforma como servicio ofrecida por los creadores de dbt que proporciona una interfaz de usuario completa, hosting y gestión de dbt en un entorno cloud. Facilita la colaboración, automatización y escalabilidad de proyectos dbt sin necesidad de configuración extensa del lado del usuario.

  • Costo: tiene un costo asociado, con varios planes que incluyen características adicionales.
  • Facilidad de uso: interfaz de usuario amigable para gestionar proyectos, ejecutar y programar trabajos, y revisar el rendimiento de los modelos.
  • Automatización y colaboración: funcionalidades integradas para la colaboración en equipo, revisión de código, e integración con sistemas de versionado como GitHub o GitLab.
  • Soporte y seguridad: soporte técnico y funcionalidades avanzadas de seguridad y gestión de acceso.

Tip: dbt Core es ideal si preferís una solución gratuita, controlable y personalizable, sobre todo si ya tenés infraestructura de CI/CD y versionado establecida. dbt Cloud conviene a equipos que buscan una solución robusta y lista para usar, con menos configuración técnica.

Instalación de dbt Core

Requisitos

Antes de comenzar con la instalación de dbt Core, asegurate de tener lo siguiente:

  • Python: versión 3.6 o superior.
  • pip: el instalador de paquetes de Python.
  • Git: para gestionar el control de versiones (opcional pero recomendado).
  • Base de datos o motor de SQL: una base de datos o motor compatible con dbt para ejecutar tus transformaciones de datos.

Paso a paso

  1. Verificar la instalación de Python y pip

    Asegurate de que Python y pip están instalados en tu sistema:

    bash
    python --version
    pip --version
    

    Si no tenés Python instalado, podés descargarlo desde python.org.

  2. Crear un entorno virtual (opcional pero recomendado)

    Es una buena práctica crear un entorno virtual para gestionar las dependencias del proyecto:

    bash
    python -m venv mydbt-env
    

    Activá el entorno virtual:

    En Windows:

    bash
    mydbt-env\Scripts\activate
    

    En macOS y Linux:

    bash
    source mydbt-env/bin/activate
    
  3. Instalar dbt Core usando pip

    Con el entorno virtual activado (si decidiste usar uno), instalá dbt Core utilizando pip. Adicionalmente se recomienda instalar el adaptador para el motor de SQL que vayas a utilizar:

    bash
    python3 -m pip install dbt-core dbt-ADAPTER_NAME
    
  4. Verificar la instalación de dbt

    Finalmente, verificá que dbt se haya instalado correctamente:

    bash
    dbt --version
    

    Deberías ver una salida que indica la versión de dbt instalada, confirmando que dbt está listo para ser utilizado.

Comando dbt no se reconoce en la consola

Uno de los problemas más comunes al instalar dbt es que el comando dbt no se reconoce en la consola. Este problema puede deberse a varias razones, dependiendo del sistema operativo.

Windows

  1. Verificá que Python esté en el PATH: asegurate de que Python y pip estén en el PATH del sistema ejecutando python --version y pip --version en una nueva terminal. Si no se reconocen, tenés que agregar Python al PATH (durante la instalación de Python hay una opción para hacerlo).
  2. Verificá que el entorno virtual esté activado con mydbt-env\Scripts\activate.
  3. Reinstalá dbt dentro del entorno virtual con pip install dbt-core dbt-ADAPTER_NAME.

macOS y Linux

  1. Verificá que Python y pip estén correctamente instalados con python3 --version y pip3 --version. Si no se reconocen, instalá Python desde el gestor de paquetes de tu sistema o desde python.org.

  2. Verificá que el entorno virtual esté activado con source mydbt-env/bin/activate.

  3. Reinstalá dbt con pip install dbt-core dbt-ADAPTER_NAME.

  4. Si el comando dbt sigue sin reconocerse, es posible que la carpeta de scripts de pip no esté en el PATH. Normalmente la ruta es ~/.local/bin para instalaciones locales de pip:

    bash
    export PATH="$HOME/.local/bin:$PATH"
    

    Agregá esta línea al archivo de configuración de tu shell (.bashrc, .zshrc, etc.) para que se aplique en cada nueva terminal. En macOS con zsh, agregala también a .zprofile.

Tip: siguiendo estos pasos deberías poder resolver el problema y que el comando dbt sea reconocido en la consola de tu sistema operativo.

Configuración de un proyecto dbt

Para configurar un proyecto dbt desde cero en tu entorno local, seguí estos pasos:

Paso 1: creá y configurá un proyecto dbt

  1. Inicializá un nuevo proyecto dbt:

    bash
    dbt init my_dbt_project
    

    Esto creará una estructura de directorios básica para tu proyecto dbt.

  2. Configurá el archivo profiles.yml

    El archivo profiles.yml se utiliza para configurar la conexión a tu base de datos. Generalmente se encuentra en el directorio ~/.dbt/. Ejemplo de configuración para PostgreSQL:

    yaml
    my_dbt_project:
      target: dev
      outputs:
        dev:
          type: postgres
          host: localhost
          user: tu_usuario
          pass: tu_contraseña
          port: 5432
          dbname: tu_base_de_datos
          schema: esquema_dbt
    
  3. Editá el archivo dbt_project.yml

    Este archivo se encuentra en la raíz de tu proyecto dbt y se utiliza para configurar aspectos específicos del proyecto, como los directorios de modelos y el nombre del esquema:

    yaml
    name: 'my_dbt_project'
    version: '1.0'
    config-version: 2
    
    # Configuración de la ruta de los modelos
    model-paths: ["models"]
    
    # Configuración de la ruta de los tests
    test-paths: ["tests"]
    
    # Configuración de la ruta de los datos
    data-paths: ["data"]
    
    # Configuración de la ruta de los análisis
    analysis-paths: ["analysis"]
    
    # Configuración de la ruta de los documentos
    docs-paths: ["docs"]
    
    # Configuración de la ruta de los snapshots
    snapshot-paths: ["snapshots"]
    
    # Configuración del esquema predeterminado
    target-path: "target"
    clean-targets: ["target", "dbt_modules"]
    

Paso 2: definí tus modelos

  1. Creá un directorio para tus modelos:

    bash
    mkdir -p models/my_first_model
    
  2. Definí un modelo básico creando un archivo SQL en el directorio models:

    sql
    -- models/my_first_model.sql
    select 1 as id, 'Hello, dbt!' as message
    

Paso 3: ejecutá y probá tu proyecto

  1. Compilá y ejecutá el modelo:

    bash
    dbt run
    
  2. Verificá los resultados en tu base de datos, en el esquema configurado en profiles.yml.

  3. Ejecutá pruebas (opcional):

    bash
    dbt test
    

Paso 4: documentá tu proyecto

  1. Generá la documentación:

    bash
    dbt docs generate
    
  2. Visualizá la documentación:

    bash
    dbt docs serve
    

    Esto abrirá un servidor web local donde vas a poder ver la documentación generada.

Siguiendo estos pasos, vas a haber configurado y ejecutado un proyecto dbt básico en tu entorno local.

Conexión a diferentes fuentes de datos

Para conectar dbt a diferentes fuentes de datos, seguí estos pasos generales.

1. Instalar el adaptador correspondiente

Cada fuente de datos requiere un adaptador específico. Usá pip para instalar el adaptador adecuado. Algunos ejemplos:

bash
# PostgreSQL
pip install dbt-postgres

# Snowflake
pip install dbt-snowflake

# BigQuery
pip install dbt-bigquery

2. Configurar el archivo profiles.yml

El archivo profiles.yml define la conexión a tu fuente de datos y generalmente se encuentra en ~/.dbt/. Así se configura para algunas fuentes comunes:

PostgreSQL

yaml
my_dbt_project:
  target: dev
  outputs:
    dev:
      type: postgres
      host: localhost
      user: tu_usuario
      pass: tu_contraseña
      port: 5432
      dbname: tu_base_de_datos
      schema: esquema_dbt

Snowflake

yaml
my_dbt_project:
  target: dev
  outputs:
    dev:
      type: snowflake
      account: tu_cuenta
      user: tu_usuario
      password: tu_contraseña
      role: tu_rol
      database: tu_base_de_datos
      warehouse: tu_warehouse
      schema: esquema_dbt

BigQuery

yaml
my_dbt_project:
  target: dev
  outputs:
    dev:
      type: bigquery
      method: service-account
      project: tu_proyecto
      dataset: tu_dataset
      keyfile: /ruta/a/tu/archivo-de-clave.json

3. Probar la conexión

Una vez configurado el archivo profiles.yml, probá la conexión ejecutando:

bash
dbt debug

Este comando verificará que dbt pueda conectarse a la fuente de datos utilizando la configuración proporcionada.

4. Configurar el archivo dbt_project.yml

Asegurate de que el archivo dbt_project.yml en la raíz de tu proyecto esté correctamente configurado:

yaml
name: 'my_dbt_project'
version: '1.0'
config-version: 2
model-paths: ["models"]
target-path: "target"
clean-targets: ["target", "dbt_modules"]

Siguiendo estos pasos, vas a poder conectar dbt a diferentes fuentes de datos y empezar a trabajar en la transformación de tus datos.