Dataform
Dataform es una plataforma de desarrollo de datos en BigQuery que Solvento utiliza para transformaciones ad hoc, cuadraturas, consistencia de datos y generación de snapshots para dashboards. No sustituye a dbt: ambas herramientas coexisten con propósitos distintos.
Descripción
Dataform permite escribir SQL estructurado (SQLX) directamente en la consola de GCP o conectado a un repositorio Git. A diferencia de dbt, que corre en pipelines CI/CD programados, Dataform en Solvento se usa principalmente de forma interactiva y puntual — sin schedules automatizados en el estado actual.
Rol dentro de la arquitectura
| Herramienta | Uso en Solvento | Destino |
|---|---|---|
| dbt-etls | ETL principal — transformaciones de Syntage hacia adv-analytics | solvento-adv-analytics-prod |
| dbt-analytics | ETL de riesgo — construye data products de riesgo | solvento-risk-analytics-prod |
| Dataform | Cuadraturas, consistencia ad hoc, exploración, snapshots para BI | solvento-data-prod y solvento-adv-analytics-prod |
Estado actual en GCP
Al auditar los proyectos GCP se encontraron 38 repositorios Dataform distribuidos en dos proyectos:
| Proyecto | Repositorios totales | Con schedule | Conectados a Git |
|---|---|---|---|
solvento-data-prod |
13 | 0 | 0 |
solvento-adv-analytics-prod |
25 | 0 | 0 |
Hallazgo principal: ningún repositorio tiene release configs ni workflow configs configurados, lo que significa que no hay ejecuciones automatizadas desde Dataform. Los repositorios de GitLab (dataform_terminal, dataform_metabase_luzmo) no están conectados a la consola de Dataform.
Repositorios en GitLab (con código versionado)
Estos dos proyectos existen en GitLab y contienen el código SQLX con control de versiones, aunque no están vinculados directamente al workspace de Dataform en GCP.
dataform_terminal
- GitLab: solventomx/data/dataform_terminal
- Proyecto GCP:
solvento-data-prod - Dataset destino:
solvento-data-prod.dataform - Propósito: Transformaciones de datos de Syntage y Carta Porte para preparar tablas de análisis de terminal de carga.
- Modelos principales:
| Modelo | Descripción |
|---|---|
syntage_cartaporte.sqlx |
Datos consolidados de Carta Porte desde syntage.cp_body |
syntage_mercancias.sqlx |
Mercancías de la Carta Porte desde syntage.cp_mercancias |
syntage_ubicaciones_origen.sqlx |
Ubicaciones de origen desde syntage.cp_ubicaciones |
syntage_ubicaciones_destino.sqlx |
Ubicaciones de destino desde syntage.cp_ubicaciones |
dataform_metabase_luzmo
- GitLab: solventomx/data/dataform_metabase_luzmo
- Proyecto GCP:
solvento-adv-analytics-prod - Propósito: Genera snapshots programados de saldos, límites y pagos para los dashboards embebidos de Metabase Cloud y Luzmo.
- Uso: Alimenta los dashboards en solvento.metabaseapp.com
Repositorios en la consola GCP (ad hoc / sin Git)
Estos repositorios existen directamente en el workspace de Dataform en GCP sin control de versiones. Se clasifican en dos grupos:
Repositorios operativos (solvento-data-prod)
Usados para cuadraturas, consistencia y análisis de calidad de datos. Se ejecutan manualmente cuando se necesita.
| Repositorio | Propósito |
|---|---|
consistencia |
Verificaciones de consistencia entre fuentes de datos |
cuadraturas client terminal |
Cuadraturas de datos de clientes y terminal |
cuadratura invoices_items |
Cuadratura de items de facturas |
deduplication invoice_items |
Deduplicación de registros en invoices_items |
invoices_dbt |
Transformaciones complementarias de facturas |
report_invoices_items_consistency_totalitems_90_days |
Reporte de consistencia de items — últimos 90 días |
xml-data |
Transformaciones sobre datos XML parseados por bucket-xml-parser-prod |
metabase_usage |
Métricas de uso de Metabase (queries, usuarios activos) |
dwh-usage-all |
Análisis de uso del data warehouse (bytes, costos, frecuencia) |
Proveedores de transporte |
Análisis de proveedores de transporte desde Carta Porte |
Repositorios operativos (solvento-adv-analytics-prod)
| Repositorio | Propósito |
|---|---|
items_consistency |
Consistencia de items en el proyecto depurado |
terminal_ag |
Análisis exploratorio de datos de terminal |
terminal_quoting_dataset_v2 |
Dataset de cotización para la aplicación Terminal v2 |
model_training |
Preparación de datos para entrenamiento de modelos ML |
Non-anon-enrich |
Enriquecimiento de datos sin anonimizar (revisar — posible PII, ver BigQuery — PII) |
Repositorios de exploración (sin uso en producción)
Repositorios personales o temporales que no deben usarse en pipelines de producción. Candidatos a eliminar:
explore_1 a explore_5, Astrid, CHR_20260302, DataRealese20260324, CH sample 2, ch_sample_terminaldataOAL, Freins State, Freins Municipio, Deliveries BQ, qualitas-insurance-data, qualitas-insurance-data-grouped, QA_SAT_Income, Find Hubspot Contacts, Customers Carta Porte Trucks, cobra 2.0 guide, Whitepaper Model
Flujo de datos
graph TB
subgraph raw["solvento-data-prod — RAW"]
syntage_src[syntage<br/>invoices, cp_body, etc.]
svc_src[svc_master_public<br/>xml_data]
end
subgraph dataform_dp["Dataform — solvento-data-prod"]
df_terminal[dataform_terminal<br/>cartaporte, mercancias, ubicaciones]
df_cuad[Cuadraturas y Consistencia<br/>ad hoc / manual]
end
subgraph dataform_adv["Dataform — solvento-adv-analytics-prod"]
df_meta[dataform_metabase_luzmo<br/>snapshots saldos / límites / pagos]
df_items[items_consistency<br/>terminal_ag / quoting]
end
subgraph adv["solvento-adv-analytics-prod — DEPURADO"]
dashboards_ds[dashboards<br/>snapshots BI]
terminal_ds[terminal / terminal_v3]
end
subgraph destinos_raw["solvento-data-prod.dataform"]
df_out[syntage_cartaporte<br/>mercancias, ubicaciones]
end
syntage_src --> df_terminal --> df_out
svc_src --> df_cuad
syntage_src --> df_cuad
adv --> df_meta --> dashboards_ds
adv --> df_items --> terminal_ds
Dataset dataform_assertions en solvento-data-prod
El dataset dataform_assertions almacena los resultados de los assertions (tests de calidad) ejecutados por Dataform. Cada vez que un workspace ejecuta tests, los resultados se escriben aquí para auditoría y monitoreo de calidad.
Este dataset está documentado en BigQuery — Datasets como parte de los recursos de solvento-data-prod.
Comparación Dataform vs dbt en Solvento
| Aspecto | dbt (dbt-etls / dbt-analytics) | Dataform |
|---|---|---|
| Propósito | ETL estructurado y repetible | Exploración, cuadraturas, snapshots BI |
| Versionado | Git (GitLab) — obligatorio | Solo 2 repos en Git; resto sin control |
| Scheduling | CI/CD + Cloud Scheduler | Sin schedules activos actualmente |
| Destino principal | adv-analytics-prod, risk-analytics-prod |
data-prod.dataform, adv-analytics-prod |
| Tests | Integrados en el pipeline | dataform_assertions dataset |
| Quién lo usa | Equipo data engineering (pipeline) | Equipo data engineering (ad hoc + BI) |
Observaciones y plan de mejora
Sin ejecuciones automatizadas
Ninguno de los 38 repositorios en GCP tiene release configs ni workflow configs. Los modelos de dataform_terminal y dataform_metabase_luzmo que necesitan ejecución periódica deben conectarse a Git y configurar un schedule en la consola de Dataform o mediante Cloud Scheduler.
| Prioridad | Acción | Detalle |
|---|---|---|
| Alta | Conectar dataform_metabase_luzmo a Git y configurar schedule |
Los snapshots de saldos/límites/pagos para Metabase dependen de ejecución periódica |
| Alta | Conectar dataform_terminal a Git en Dataform |
Evitar que los modelos SQLX solo existan en GitLab sin conexión al workspace de GCP |
| Media | Eliminar repositorios de exploración obsoletos | 15+ repos sin nombre claro ni uso — generan confusión en la consola |
| Media | Añadir descriptions a los repos operativos en GCP | Ningún repo tiene descripción en la consola de Dataform |
| Baja | Revisar Non-anon-enrich por posible PII |
El nombre sugiere datos personales sin anonimizar — revisar contenido y acceso |