Skip to content

dbt Desde DWH

dbt es utilizado en Solvento para realizar transformaciones desde solvento-data-prod hacia solvento-adv-analytics-prod.

Descripción

dbt (Data Build Tool) permite transformar datos en el warehouse mediante código SQL. En Solvento, se utiliza para:

  • Transformaciones: Transformar datos raw de solvento-data-prod en datos procesados para solvento-adv-analytics-prod
  • Consistencia: Asegurar la consistencia de los datos mediante modelos y tests
  • Documentación: Documentar modelos y sus dependencias

Repositorio

  • Repositorio: dbt-etls
  • Proyecto GCP Fuente: solvento-data-prod (lee datos raw)
  • Proyecto GCP Destino: solvento-adv-analytics-prod (escribe datos depurados)

Flujo de Datos

graph TB
    subgraph raw["solvento-data-prod<br/>RAW DATA"]
        Syntage[syntage schema<br/>invoices, invoices_items, etc.]
        Catalog[catalog schema<br/>c_estado, c_municipio]
        Analiticas[analiticas schema<br/>catalogo_prodyserv_sat, exchange_rates]
    end

    subgraph dbt["dbt ETLs<br/>dbt-etls"]
        Silver[Silver Layer<br/>Transformaciones intermedias]
        Gold[Gold Layer<br/>Modelos finales]
        Consistency[Consistency Models<br/>Validación]
    end

    subgraph processed["solvento-adv-analytics-prod<br/>DEPURADO"]
        ConsistencyJobs[consistency_jobs schema<br/>invoices, invoices_items]
        Terminal[terminal schema<br/>client_dbt, market_dbt]
        OtherSchemas[Otros schemas]
    end

    Syntage --> Silver
    Catalog --> Silver
    Analiticas --> Silver

    Silver --> Gold
    Gold --> ConsistencyJobs
    Gold --> Terminal
    Gold --> OtherSchemas

    ConsistencyJobs --> Consistency
    Consistency -.->|"Valida"| Syntage

Recursos

Proyecto dbt

  • Repositorio: dbt-etls
  • Nombre del Proyecto: my_new_project
  • Perfiles: Configuración de perfiles (desarrollo, producción)
  • Fuente: BigQuery (solvento-data-prod) - Lee datos raw
  • Target: BigQuery (solvento-adv-analytics-prod) - Escribe datos depurados

Models

Los models de dbt transforman los datos. El proyecto incluye las siguientes áreas:

Advanced Analytics

Transformaciones de datos de Syntage hacia solvento-adv-analytics-prod:

  • invoices: Tabla de facturas depuradas (schema: consistency_jobs)
  • invoices_items: Items de facturas depurados
  • invoices_360: Vista 360 de facturas
  • issuer_names: Nombres de emisores
  • items_partition_map: Mapa de particiones de items

Consistency Jobs

Modelos de consistencia que comparan datos raw vs depurados:

  • Invoices: Comparaciones históricas y últimos 90 días
  • Items: Comparaciones de totales y consistencia

Terminal Client

Modelos de terminal cliente con arquitectura silver/gold:

  • Silver Layer:
  • cartaporte_data, client_demo_anon, destino_info
  • final_invoice, location_extents, mercancias_data
  • origen_info, outlier_bounds, stats
  • Gold Layer:
  • client_dbt: Modelo final de cliente
  • Destino: solvento-adv-analytics-prod.terminal.client_dbt
  • Uso: Consumido por el Proyecto Terminal para ETL hacia Supabase

Terminal Market

Modelos de mercado terminal:

  • Silver Layer:
  • stg_market_cartaporte, stg_market_locations_agg
  • stg_market_mercancias_agg, stg_market_ubicaciones
  • Gold Layer:
  • market_dbt: Modelo final de mercado
  • Destino: solvento-adv-analytics-prod.terminal.market_dbt
  • Uso: Consumido por el Proyecto Terminal para ETL hacia Supabase

Tests

Tests de dbt para validar la calidad de los datos:

  • Uniqueness: Validar que las claves sean únicas
  • Not null: Validar que campos requeridos no sean nulos
  • Accepted values: Validar valores aceptados
  • Relationships: Validar relaciones entre tablas
  • Custom tests: Tests personalizados

Fuentes de Datos

El proyecto lee datos raw de solvento-data-prod desde:

Syntage

  • Schema: syntage
  • Tablas: invoices, invoices_items, cp_ubicaciones, cp_body, cp_mercancias
  • Tablas adicionales: syntage_cartaporte, syntage_ubicaciones, syntage_mercancias, syntage_canceladas

Catalog

  • Schema: catalog
  • Tablas: c_estado, c_municipio

Analíticas

  • Schema: analiticas
  • Tablas: catalogo_prodyserv_sat, exchange_rates

Dependencias

  • Fuentes: Tablas raw de solvento-data-prod de las que dependen los models
  • Modelos intermedios: Models que dependen de otros models (silver layer)
  • Modelos finales: Models finales escritos a solvento-adv-analytics-prod (gold layer)

Filosofía: dbt lee datos raw de solvento-data-prod, los transforma y escribe datos depurados a solvento-adv-analytics-prod.

Configuración

Perfil de dbt

# Perfil dbt para dbt-etls
solvento:
  target: prod
  outputs:
    prod:
      type: bigquery
      method: service-account
      project: solvento-adv-analytics-prod
      # Fuentes se leen de solvento-data-prod (definido en sources.yml)
      location: US
      keyfile: /path/to/service-account.json

Configuración de Models

Los models especifican el proyecto destino en su configuración:

{{ config(
  database='solvento-adv-analytics-prod',
  schema='consistency_jobs',  -- o 'terminal', etc.
  materialized='incremental',
  unique_key='id',
  partition_by={'field': 'etl_dts', 'data_type': 'timestamp', 'granularity': 'day'}
) }}

Ejecución

  • Desarrollo: Ejecución local para desarrollo y testing
  • Producción: Ejecución programada (Cloud Composer, Cloud Scheduler, CI/CD)

Arquitectura del Proyecto

Estructura de Capas

El proyecto sigue una arquitectura silver/gold:

Silver Layer

Models intermedios que transforman y limpian datos raw: - Limpieza de datos - Normalización de formatos - Validación básica - Agregaciones intermedias

Ejemplos: cartaporte_data, final_invoice, stg_market_cartaporte

Gold Layer

Models finales listos para consumo: - Tablas finales depuradas - Vistas 360 - Modelos de negocio

Ejemplos: client_dbt, market_dbt, invoices_360

Schemas de Destino

Los models se escriben a diferentes schemas en solvento-adv-analytics-prod:

  • consistency_jobs: Facturas e items depurados (invoices, invoices_items)
  • terminal: Modelos de terminal cliente y mercado
  • Otros schemas: Según el modelo específico

Monitoreo y Métricas

  • Ejecuciones: Número de ejecuciones de dbt
  • Success Rate: Tasa de éxito de las ejecuciones
  • Test Results: Resultados de los tests de calidad
  • Execution Time: Tiempo de ejecución de los models
  • Dependencies: Visualización de dependencias entre models

Consistencia de Datos

El proyecto incluye modelos de consistencia que comparan datos raw vs depurados:

  • Invoices: Comparaciones históricas y últimos 90 días
  • Items: Comparaciones de totales y consistencia de items

Estos modelos ayudan a validar que las transformaciones mantienen la integridad de los datos.

Referencias