# dbt

> Una herramienta para escribir transformaciones de datos en SQL, con tests, como software.

- Nivel: Avanzado
- Temas: Datos
- URL: https://tidbit.legios.com.ar/es/dbt/
- En inglés: [dbt](https://tidbit.legios.com.ar/dbt/)

**dbt** (al principio "data build tool") es una herramienta open source para el paso de transformación de un pipeline de datos, la T de ELT. Los datos ya están cargados en un data warehouse como Snowflake, BigQuery, Redshift o Databricks; dbt te ayuda a convertir esas tablas crudas en tablas limpias y confiables. Cada transformación es un **modelo**: un archivo `.sql` común con una consulta `SELECT`, guardado en un repositorio de git.

Los modelos se pueden referir entre sí con `{{ ref('orders') }}`, así dbt sabe en qué orden construirlos y dibuja toda la cadena como un grafo. Cuando corrés `dbt run`, dbt manda el SQL de cada modelo al warehouse, que hace el trabajo pesado; dbt en sí no mueve datos. `dbt test` controla reglas como "esta columna nunca está vacía" o "cada pedido tiene un cliente", y `dbt docs` genera un sitio web que describe cada tabla y columna, con su linaje.

Su impacto fue tanto cultural como técnico: llevó costumbres del software, como el control de versiones, la revisión de código, los tests y las piezas reutilizables, a analistas que ya sabían SQL. De ahí nació el rol de **analytics engineer**. dbt Labs, la empresa detrás, vende además una plataforma en la nube, pero la herramienta central es open source y corre desde la línea de comandos.

## Una analogía

Un recetario para la cocina de un restaurante donde cada receta dice qué otras preparaciones necesita. El chef (el warehouse) cocina; dbt lee el recetario, calcula el orden y revisa cada plato antes de que salga.

## Para quedarse

- Cada modelo es un SELECT en un archivo .sql; dbt los construye dentro del warehouse.
- ref() conecta los modelos en un grafo de dependencias con orden automático.
- Trae tests incorporados y documentación generada con linaje.
- Llevó git, revisión de código y tests al trabajo de análisis en SQL.

## Para seguir leyendo

- [¿Qué es dbt? (documentación oficial, en inglés)](https://docs.getdbt.com/docs/introduction)
- [dbt Core en GitHub (en inglés)](https://github.com/dbt-labs/dbt-core)

## Términos relacionados

- [Código abierto](https://tidbit.legios.com.ar/es/open-source/): Software cuyo código cualquiera puede leer, usar, cambiar y compartir.
- [ETL](https://tidbit.legios.com.ar/es/etl/): Sacar datos de sus fuentes, limpiarlos y cargarlos donde se puedan analizar.
- [Data warehouse](https://tidbit.legios.com.ar/es/data-warehouse/): Una base hecha para analizar: años de historia, de muchas fuentes, en un solo lugar.
- [Amazon Redshift](https://tidbit.legios.com.ar/es/amazon-redshift/): El data warehouse de AWS: SQL sobre tablas enormes, pensado para analizar, no para apps.
- [Git](https://tidbit.legios.com.ar/es/git/): Una máquina del tiempo para el código: cada cambio guardado, por quién y por qué.
- [SQL](https://tidbit.legios.com.ar/es/sql/): El lenguaje para hacerle preguntas a una base de datos.
- [Revisión de código](https://tidbit.legios.com.ar/es/code-review/): Que otra persona lea un cambio de código antes de que pase a ser parte del producto.
- [Computación en la nube](https://tidbit.legios.com.ar/es/cloud-computing/): Alquilar computadoras por internet en vez de comprar las tuyas.
