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-proden datos procesados parasolvento-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 depuradosinvoices_360: Vista 360 de facturasissuer_names: Nombres de emisoresitems_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_infofinal_invoice,location_extents,mercancias_dataorigen_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_aggstg_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-prodde 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
- Repositorio:
dbt-etls - dbt Documentation
- dbt Best Practices