Skip to content

dbt (data build tool)

dbt (data build tool) convierte consultas SELECT de SQL en tablas o vistas de tu almacén de datos, las corre en orden y prueba los resultados: dbt run construye los modelos y dbt test los revisa.

Selecciona cualquier frase de aquí para preguntarle a tu Maestro.

dbt run armó fct_sales con los 1,000 pedidos de stg_orders, sin errores. ¿Cuántas filas tiene fct_sales?

Una tienda en línea con su proyecto de dbt. Las fuentes llevan borde punteado. Datos de ejemplo.

Para qué sirve: para que las transformaciones de tus datos vivan en archivos de SQL ordenados, con sus dependencias y sus pruebas, en vez de consultas sueltas que nadie sabe en qué orden correr. Trabaja dentro de tu base de datos o tu almacén de datos, como Snowflake, BigQuery o DuckDB.

Cómo funciona: cada modelo es un SELECT en un archivo. Con ref() dices de qué otro modelo sale, y dbt arma el orden. Por costumbre, los modelos stg_ (staging) limpian una fuente cada uno y los fct_ (de hechos) los juntan en la tabla de la que reportas. Las pruebas son como pruebas unitarias para tus tablas: que una llave no se repita, que no venga vacía, que un valor esté en una lista.

Una prueba de unique en la llave te dice si la granularidad es la que crees. Y una conciliación contra otra fuente atrapa lo que las pruebas no ven.

Lo practicas en Ya haces ingeniería de datos, donde tus revisiones se vuelven pruebas que corren solas.

Así se usa

El modelo

models/fct_sales.sql

  1. marcado: select o.order_id, o.amount, c.regionUn modelo es solo un SELECT; dbt lo vuelve tabla o vista.
  2. from {{ ref('stg_orders') }} oref() le dice a dbt de qué modelo sale, para correrlos en orden.
  3. join {{ ref('stg_customers') }} c using (customer_id)
No escribes CREATE TABLE ni el orden en que se corre: dbt los saca de los ref().

Sus pruebas

models/schema.yml

  1. models:
  2. - name: fct_sales
  3. columns:
  4. - name: order_idLa llave: un pedido por fila.
  5. marcado: data_tests: [unique, not_null]dbt test revisa las dos y te dice cuáles fallan y en cuántas filas. En versiones viejas se llama tests.
El SQL y sus pruebas viven en archivos de texto, así que los puedes versionar y revisar como cualquier código.

Cuándo mirar más de cerca

Las pruebas pasan

Después de cambiar un filtro

  1. $ dbt test
  2. marcado: Done. PASS=4 WARN=0 ERROR=0

Las cuatro pruebas pasan. ¿Qué podría estar mal en una tabla que pasa todas?

Pregúntale a tu Maestro sobre dbt

Te responde desde la página gratis más cercana a esta palabra, igual que mientras estudias.

Ejemplo

Tú: ¿Qué quiere decir "dbt", en palabras sencillas?

Tu Maestro: Te lo explico con un caso tuyo, que se queda mejor que una definición. ¿Qué consulta de tu trabajo corres a mano cada mes?

Pregunta sobre: Responde desde la página "¿Qué va arriba en un dashboard? El orden en que se lee"

Solo este navegador guarda lo que preguntas aquí. ¿Cómo funciona?

Para saber más

  • SQL

    SQL es el lenguaje para pedirle datos a una base de datos: qué columnas, de qué tabla, qué filas y cómo resumirlas. Te regresa otra tabla.

  • Base de datos

    Una base de datos guarda datos en tablas conectadas, con reglas para cada columna, para que muchas personas y programas los usen y cambien sin pisarse.

  • Prueba unitaria

    Darle a una pieza de lógica (una fórmula, una función) una entrada cuya salida correcta ya conoces, y comprobar que devuelve eso.

  • Granularidad (de una tabla)

    Lo que representa una fila de una tabla: una persona, una transacción, un planeta, una persona por lenguaje. Contar filas solo cuenta lo que quieres si conoces la granularidad.

Todo el glosario