Skip to content

dbt Risk Analytics

Proyecto dbt dedicado a análisis de riesgo que transforma datos desde múltiples fuentes hacia solvento-risk-analytics-prod.

Descripción

Este proyecto dbt (dbt-analytics) es el motor de transformación de datos para análisis de riesgo en Solvento. Transforma datos raw y depurados desde solvento-data-prod y solvento-adv-analytics-prod hacia solvento-risk-analytics-prod, generando data products especializados para análisis de riesgo.

Repositorio

  • Repositorio: dbt-analytics
  • Nombre del Proyecto: warehouse
  • Proyecto GCP Destino: solvento-risk-analytics-prod

Arquitectura

Flujo de Datos

graph TB
    subgraph fuentes["Fuentes de Datos"]
        DataProd[solvento-data-prod<br/>RAW]
        AdvAnalytics[solvento-adv-analytics-prod<br/>DEPURADO]
    end

    subgraph dbt["dbt Risk Analytics"]
        Staging[Staging Layer<br/>stg_*]
        Intermediate[Intermediate Layer<br/>int_*]
        Marts[Marts Layer<br/>fact_*/dim_*]
        DataProducts[Data Products<br/>Specialized]
    end

    subgraph destino["Destino"]
        RiskProd[solvento-risk-analytics-prod<br/>BigQuery]
    end

    DataProd --> Staging
    AdvAnalytics --> Staging

    Staging --> Intermediate
    Intermediate --> Marts
    Marts --> DataProducts

    DataProducts --> RiskProd

Arquitectura Medallion

El proyecto sigue la arquitectura medallion (Bronze → Silver → Gold):

  1. Staging (Bronze): Transformación inicial de datos raw
  2. Schema: staging
  3. Prefijo: stg_*
  4. Materialización: Table

  5. Intermediate (Silver): Lógica de negocio y transformaciones

  6. Schema: intermediate / intermediate_2
  7. Prefijo: int_*
  8. Materialización: Table

  9. Marts (Gold): Tablas finales para consumo

  10. Schema: core
  11. Prefijo: fact_*, dim_*
  12. Materialización: Table

  13. Data Products: Productos especializados de riesgo

  14. Schema: data_products
  15. Materialización: Table

Fuentes de Datos

Desde solvento-data-prod (Raw)

El proyecto lee datos raw de múltiples fuentes:

LoanPro (Ingerido via Datastream)

  • Schema: loanpro
  • Ingesta: Datastream (CDC en tiempo real desde MySQL)
  • Tablas principales:
  • loan_entity, loan__customer, loan_setup_entity
  • customer_entity, loan_tx, charge_entity
  • loan_status_archive, loan__portfolio
  • line_of_credit_entity, line_of_credit_daily_archive

Syntage

  • Schema: syntage
  • Tablas principales:
  • Datos de buró de crédito
  • Información de clientes
  • Datos financieros

HubSpot (Ingerido via Airbyte)

  • Schema: hubspot
  • Ingesta: Airbyte (API REST nativa)
  • Tablas principales:
  • deals, contacts, company

Toku (Ingerido via Webhooks)

  • Schema: toku
  • Ingesta: Webhooks (Cloud Run → Pub/Sub → Dataflow)
  • Tablas: Datos de Toku ingeridos

Otras Fuentes

  • Carta Porte: Datos de transporte
  • SVC Public: Datos de operaciones
  • Analíticas: Datos analíticos

Desde solvento-adv-analytics-prod (Depurado)

Syntage Advanced Analytics

  • Schema: consistency_jobs
  • Tablas:
  • invoices: Facturas depuradas
  • invoices_items: Items de facturas depurados

Desde solvento-risk-analytics-prod (Automation)

  • Schema: automation
  • Tablas: Datos de automatización

Data Products Principales

1. Solvento Score v2

Sistema de scoring de crédito para evaluación de riesgo.

  • Modelo principal: dp_solvento_score_v2
  • Componentes:
  • comp_cancelled_invoices: Facturas canceladas
  • comp_debt_ratio: Ratio de deuda
  • comp_ratio_top_3: Ratio top 3
  • comp_rev_hubspot_customers: Revenue de clientes HubSpot

2. DSCR (Debt Service Coverage Ratio)

Análisis de cobertura de servicio de deuda.

  • Modelo principal: dscr
  • Componentes:
  • comp_monthly_payments_balances: Pagos mensuales y balances

3. Customer Classifier

Clasificación y segmentación de clientes.

  • Modelos:
  • customer_type: Tipo de cliente
  • customer_type_all_customers: Todos los clientes clasificados

4. Variable Interest Reserve Writeoff

Reservas y writeoffs de interés variable.

  • Modelo: historical_variable_interest_loan_buckets

5. Segmentation

Segmentación de clientes y productos.

  • Modelos:
  • comp_segmentation_carta_porte: Segmentación Carta Porte
  • comp_segmentation_invoice_items: Segmentación de items de factura

Estructura del Proyecto

dbt-analytics/
├── models/
│   ├── staging/              #  Bronze: Raw transformations
│   │   ├── loanpro/         # LoanPro staging models
│   │   ├── syntage/         # Syntage staging models
│   │   ├── hubspot/         # HubSpot staging models
│   │   ├── toku/            # Toku staging models
│   │   └── ...
│   ├── intermediate/         #  Silver: Business logic
│   │   ├── loanpro/         # LoanPro intermediate models
│   │   ├── syntage/         # Syntage intermediate models
│   │   └── ...
│   ├── intermediate_2/       # Additional processing layer
│   ├── marts/core/           #  Gold: Final analytics
│   │   ├── loanpro/         # fact_*/dim_* tables
│   │   ├── syntage/         # Credit analytics
│   │   └── hubspot/         # Customer analytics
│   ├── data_products/        #  Risk products
│   │   ├── solvento_score_v2/
│   │   ├── dscr/
│   │   ├── customer_classifier/
│   │   └── ...
│   └── models/               #  Source of Truth
│       └── historical_loanpro.sql
├── seeds/                    # Reference data
├── macros/                   # Reusable functions
├── tests/                    # Data quality tests
└── docs/                     # Documentation

Modelos Clave

Source of Truth

  • historical_loanpro.sql: Tabla maestra de préstamos, base para todos los análisis

Core Facts & Dimensions

  • fact_loanpro_loans: Analytics del ciclo de vida de préstamos
  • fact_loanpro_payments: Transacciones de pagos
  • fact_loanpro_charges: Tracking de fees y cargos
  • fact_syntage_invoices: Facturas de Syntage
  • fact_syntage_invoices_items: Items de facturas

Configuración

Perfil de dbt

warehouse:
  target: prod
  outputs:
    prod:
      type: bigquery
      method: service-account
      project: solvento-risk-analytics-prod
      dataset: warehouse
      location: US

Schemas por Capa

  • Staging: staging
  • Intermediate: intermediate, intermediate_2
  • Marts: core
  • Data Products: data_products
  • Utility: utility
  • Semantic: semantic

Frecuencia de Ejecución

Capa Frecuencia Método
LoanPro Core 2 horas Incremental
Syntage Credit 6 horas Full refresh
HubSpot CRM 12 horas Incremental
Data Products 6 horas Incremental

Testing y Calidad

Tests Implementados

  • Schema Tests: Not null, unique, relationships
  • Data Tests: Validación de lógica de negocio
  • Custom Tests: Tests específicos de riesgo
  • test_payoff_component_integrity
  • test_zero_balance_coherence
  • Tests de DSCR
  • Tests de dual source (Syntage)

Ejecutar Tests

# Todos los tests
dbt test

# Tests específicos
dbt test --select fact_syntage_invoices
dbt test --select tag:data_quality

Comandos Comunes

# Ejecutar todo el pipeline
dbt run

# Ejecutar solo data products
dbt run --select data_products.*

# Ejecutar solo staging
dbt run --select staging.*

# Ejecutar con full refresh
dbt run --full-refresh --select fact_loanpro_loans

# Generar documentación
dbt docs generate
dbt docs serve

Relación con Otros Proyectos

Lectura desde solvento-data-prod

  • Lee datos raw de LoanPro (replicado por Datastream, ventanas de 15 min), Syntage y Toku (webhooks), HubSpot (Airbyte), etc.
  • Transforma y limpia los datos en la capa staging

Lectura desde solvento-adv-analytics-prod

  • Lee datos depurados de Syntage (invoices, invoices_items)
  • Utiliza datos ya procesados para análisis de riesgo

Escritura a solvento-risk-analytics-prod

  • Escribe todas las capas transformadas
  • Genera data products especializados de riesgo
  • Proporciona datos listos para consumo en herramientas de BI

Monitoreo y Métricas

  • Ejecuciones: Monitoreo de ejecuciones de dbt
  • Success Rate: Tasa de éxito de las ejecuciones
  • Test Results: Resultados de tests de calidad
  • Execution Time: Tiempo de ejecución por capa
  • Data Freshness: Frescura de los datos fuente

Referencias


Este proyecto es mantenido por el equipo de Analytics Engineering de Solvento y es fundamental para el análisis de riesgo de la organización.