Saltar al contenido

Lección 5 de 20 · Lectura y práctica

Quiz: Fundamentos de dbt Cloud y Modelado

Tipo de lección: QuizConcepto clavedbt Cloud es una plataforma que permite a los Analytics Engineers transformar datos en el data warehouse mediante código SQL. A diferencia de herramientas ETL tradicionales, dbt se enfoca en la.

Del concepto a la práctica

Taller de esta lección

Este repaso conecta cuatro decisiones: dónde viven los datos, qué transforma cada modelo, cómo se ordenan las dependencias y qué evidencia demuestra calidad. La respuesta correcta debe justificar la granularidad, no solo nombrar una función.

Ejemplo resuelto

Si fct_orders usa ref('stg_orders'), el modelo final depende del staging. Si una orden tiene tres líneas, contar filas de fct_orders mide líneas, no necesariamente órdenes. Para contar órdenes distintas se necesita la clave adecuada.

Pruébalo

  1. Clasifica cada elemento como fuente, staging, modelo final o test.

  2. Indica qué tabla debe construirse primero en una cadena de dos referencias.

  3. Calcula la métrica correcta para dos órdenes con cinco líneas.

  4. Explica qué consulta demostraría que el resultado no duplica importes.

Comprueba tu resultado

Error frecuente: confundir ref con una consulta que copia datos. Corrígelo: ref declara una relación y una dependencia; la transformación sigue estando en SQL.

Ejercicio: con órdenes O1 de dos líneas y O2 de tres, responde cuántas órdenes y cuántas líneas hay. Resultado esperado: 2 órdenes distintas y 5 líneas. Una respuesta que diga 5 órdenes revela una confusión de granularidad.

Flujo de datos: dos formatos de la misma fecha se normalizan y un vacío queda marcado antes de comprobar tipos, duplicados y unidades.
CursaloMapa de práctica
Antes del gráfico, revisa los datos

Antes de analizar, comprueba los tipos, valores vacíos, duplicados y unidades. Decide cómo tratar cada problema según el contexto y conserva la trazabilidad del cambio. Un gráfico solo es útil si los datos de entrada son coherentes.

Ver la infografía en tamaño completo ↗

Tipo de lección: Quiz

Concepto clave

dbt Cloud es una plataforma que permite a los Analytics Engineers transformar datos en el data warehouse mediante código SQL. A diferencia de herramientas ETL tradicionales, dbt se enfoca en la transformación de datos ya cargados, aplicando principios de ingeniería de software como versionado, testing y documentación.

Imagina que tu data warehouse es una cocina industrial: los ingredientes crudos (datos sin procesar) ya están en la despensa. dbt es el chef que toma esos ingredientes, los corta, mezcla y cocina para crear platos listos para servir (datos analíticos). La documentación es la receta, los tests son controles de calidad, y el versionado permite experimentar sin arruinar la producción.

Cómo funciona en la práctica

El flujo típico en dbt Cloud comienza con la conexión a tu warehouse (como Snowflake, BigQuery o Redshift). Luego defines modelos en archivos .sql que contienen SELECT statements. Estos modelos se organizan en un DAG (grafo acíclico dirigido) donde cada modelo puede depender de otros.

Paso a paso: 1) Configuras tu proyecto en dbt Cloud conectando el repositorio de código. 2) Defines modelos base que limpian datos crudos. 3) Construyes modelos intermedios que transforman datos. 4) Creas modelos finales para consumo de BI. 5) Ejecutas dbt run para materializar los modelos en tablas o vistas.

Codigo en accion

Ejemplo de un modelo base que limpia datos de ventas:

-- models/staging/stg_sales.sql
{{ config(materialized='view') }}

WITH raw_sales AS (
    SELECT
        order_id,
        customer_id,
        amount,
        order_date,
        status
    FROM {{ source('raw', 'sales_table') }}
    WHERE order_date >= '2023-01-01'
)

SELECT
    order_id,
    customer_id,
    amount,
    order_date,
    CASE
        WHEN status IN ('completed', 'shipped') THEN 'active'
        ELSE 'cancelled'
    END AS order_status
FROM raw_sales

Refactorización para mejorar performance:

-- models/staging/stg_sales_optimized.sql
{{ config(
    materialized='table',
    indexes=[{'columns': ['order_date'], 'type': 'btree'}]
) }}

SELECT
    order_id,
    customer_id,
    amount,
    order_date,
    CASE
        WHEN status IN ('completed', 'shipped') THEN 'active'
        ELSE 'cancelled'
    END AS order_status
FROM {{ source('raw', 'sales_table') }}
WHERE order_date >= '2023-01-01'
QUALIFY ROW_NUMBER() OVER (PARTITION BY order_id ORDER BY updated_at DESC) = 1

Errores comunes

  • No usar ref() para referenciar modelos: En lugar de escribir nombres de tablas directamente, usa {{ ref('model_name') }} para que dbt entienda las dependencias.
  • Materializar todo como tabla: Usa views para datos que cambian frecuentemente y tables para datos estables, balanceando costo y performance.
  • Ignorar el DAG: Modelos con dependencias circulares causan errores. Visualiza el grafo en dbt Cloud para detectar problemas.
  • No configurar esquemas: Define esquemas claros (staging, intermediate, marts) para organizar los modelos.
  • Olvidar tests básicos: Implementa tests de unicidad y not-null en columnas clave desde el inicio.

Checklist de dominio

  1. Conectar dbt Cloud a un data warehouse y repositorio Git
  2. Crear modelos base que referencian sources correctamente
  3. Usar ref() para establecer dependencias entre modelos
  4. Configurar materializaciones apropiadas (view, table, incremental)
  5. Ejecutar dbt run y dbt test desde la interfaz web
  6. Navegar por la documentación generada automáticamente
  7. Identificar y corregir errores comunes en el log de ejecución

Crear tu primer modelo incremental en dbt Cloud

En este ejercicio practicarás la creación de un modelo incremental que procesa solo datos nuevos, optimizando costos en tu warehouse.

  1. Accede a tu proyecto dbt Cloud y abre el editor SQL.
  2. Crea un nuevo archivo en models/marts/ llamado daily_sales_summary.sql.
  3. Define el modelo con configuración incremental usando unique_key y filtro por fecha.
  4. Referencia el modelo de staging stg_sales creado en la lección.
  5. Agrega datos diarios sumando el monto de ventas por cliente.
  6. Ejecuta el modelo con dbt run --select daily_sales_summary.
  7. Verifica en tu warehouse que la tabla se creó correctamente.
  8. Simula nuevos datos modificando el filtro de fecha y ejecuta de nuevo para ver el comportamiento incremental.
Pistas
  • Recuerda que los modelos incrementales requieren una unique_key para identificar registros únicos.
  • Usa la macro is_incremental() para diferenciar entre ejecución completa y incremental.
  • Configura el esquema de destino para mantener organizadas tus tablas.

Evalua tu comprension

Completa el quiz interactivo de arriba para ganar XP.

Sigue con Modelado de Datos en dbt Cloud: Tests, Documentación y Práctica

Esta lección forma parte de un curso de Cursalo. Revisa su programa y elige entre la compra individual o el acceso a toda la escuela.

Si ya tenías acceso a este curso, entra con tu cuenta: tus derechos y tu progreso se conservan. No necesitas comprarlo de nuevo.

01 / ELEGIR UNA RUTA

El próximo paso

Aprende IA mientras construyes algo que sí necesitas.

Empieza por el curso inicial o explora el catálogo para encontrar una práctica alineada con tu trabajo.