HUB dbt

DOCS.OPS()

Documentación & Historial

Tu Data Lake Documentado

¿Harto de wikis desactualizadas? dbt lee tus archivos .sql y .yml para generar un sitio web estático con el diccionario de datos y el linaje completo.

Terminal BASH
# 1. Compilar la documentación (lee schema.yml)
dbt docs generate

# 2. Servir el sitio web localmente (localhost:8080)
dbt docs serve

El Grafo de Linaje (DAG)

El sitio web de dbt muestra gráficamente de dónde viene cada dato. Si un dashboard de ventas falla, puedes rastrear hacia atrás hasta el archivo fuente original en segundos.

graph LR Source[s3_ventas_raw] --> Stg[stg_ventas] Stg --> Int[int_ventas_diarias] Int --> Mart[fact_ventas_mensuales] Mart --> Dash[Dashboard CEO] style Source fill:#1e293b,stroke:#fff,color:#fff style Stg fill:#78350f,stroke:#fff,color:#fff style Int fill:#1e3a8a,stroke:#fff,color:#fff style Mart fill:#14532d,stroke:#fff,color:#fff style Dash fill:#000,stroke:#666,color:#fff,stroke-dasharray: 5 5
01

Viajando en el Tiempo

SNAPSHOTS & SCD TYPE 2

Los datos cambian. Si un cliente cambia de dirección hoy, ¿pierdes su dirección anterior? Con dbt Snapshots, implementamos Slowly Changing Dimensions Type 2 automáticamente. dbt guarda el historial completo.

Tabla Fuente (Mutable)

IDEstado
101Inactivo

Se sobrescribió el valor 'Activo'.

dbt Snapshot (Histórica)

IDEstadoValid_To
101Activo2023-01-01
101InactivoNULL

Conserva ambas versiones con fechas de vigencia.

snapshots/clientes_historia.sql SQL
{% snapshot clientes_snapshot %}

{{
    config(
      target_schema='snapshots',
      unique_key='id',
      strategy='timestamp',
      updated_at='fecha_actualizacion'
    )
}}

select * from {{ source('crm', 'clientes') }}

{% endsnapshot %}
02

Definición de Fuentes

SOURCES.YML

Para desacoplar tus modelos de las tablas físicas crudas, usamos sources. Esto permite documentar el origen y testear la "frescura" de los datos (Freshness).

models/sources.yml YAML
version: 2

sources:
  - name: crm
    description: "Datos exportados del Salesforce"
    database: raw_zone  # Base de datos en Spark
    tables:
      - name: clientes
        description: "Tabla maestra de clientes"
        loaded_at_field: _ingest_timestamp
        freshness:
          warn_after: {count: 12, period: hour} # Alerta si no llegan datos en 12h
          error_after: {count: 24, period: hour} # Falla si pasan 24h
Comando Mágico

Ejecuta dbt source freshness para verificar si tus datos de origen están actualizados antes de correr el pipeline.

03

Go Live!

PIPELINE FINAL

El ciclo completo de ingeniería de datos profesional se ve así en tu terminal:

Terminal de Producción BASH
# 1. Instalar dependencias
dbt deps

# 2. Verificar que los datos origen estén frescos
dbt source freshness

# 3. Capturar historia (CDC)
dbt snapshot

# 4. Correr modelos (Tablas/Vistas)
dbt run

# 5. Ejecutar tests de calidad
dbt test

# 6. Generar documentos
dbt docs generate

Misión Cumplida

Has configurado un Lakehouse moderno en tu máquina local usando Spark y dbt. Tienes computación distribuida, modelado modular, tests automáticos y documentación viva.

Volver al Inicio del Curso