Los encargados de cada sucursal no tenían visibilidad de las ventas del día hasta el día siguiente. Las decisiones de reposición, promociones y asignación de personal se tomaban con datos de ayer — o de hace dos días si el reporte llegaba tarde. Con 10 sucursales en Santiago generando cientos de transacciones diarias, la brecha entre lo que ocurría y lo que se sabía era siempre de al menos 24 horas.
Un pipeline que consolida las ventas de las 10 sucursales cada noche y las entrega en un dashboard a las 6 AM. El gerente lo abre y ve en segundos cuánto vendió cada sucursal, qué categorías lideraron y cuál fue el ticket promedio — sin esperar reportes, sin Excel, sin llamar a nadie.
Construido sobre GCP con arquitectura Medallion y Star Schema. Corre automáticamente cada noche. Sin intervención manual.
→ Dashboard en Vivo — actualizado diariamente a las 02:00 AM hora Santiago.
Cloud Scheduler (02:00 AM)
│
▼
Cloud Function ──► GCS Bronze (Parquet)
│
▼
BigQuery External Table
│
▼
dbt Bronze (view)
│
▼
dbt Silver (table)
PII masked · Ley 21.719
│
▼
dbt Gold (Star Schema)
┌──────────────┼──────────────┐
▼ ▼ ▼
dim_producto dim_sucursal dim_fecha
│
▼
fact_ventas
│
▼
Looker Studio Dashboard
| Capa | Tecnología |
|---|---|
| Ingesta | Python 3.11 · Faker es_CL · PyArrow |
| Almacenamiento | Google Cloud Storage · Parquet |
| Warehouse | BigQuery · External Tables |
| Transformación | dbt 1.9 · dbt_utils |
| Orquestación | Cloud Scheduler · Cloud Functions |
| CI/CD | GitHub Actions |
| Visualización | Looker Studio |
Bronze — External Table sobre GCS. Datos crudos sin transformaciones. PII visible solo en esta capa.
Silver — Deduplicado, tipado y limpio. Nombres de clientes enmascarados y RUTs hasheados con macro mask_pii() — cumplimiento Ley 21.719.
Gold — Star Schema optimizado para analytics. Tabla de hechos unida a tres dimensiones.
32 tests dbt en todas las capas — not_null, unique, accepted_values y relationships entre fact y dimensiones. El pipeline se detiene automáticamente si algún test falla.
# Generar y subir datos diarios
python ingestion/simulator.py
# Ejecutar transformaciones
cd dbt
dbt run --target dev
dbt test --target dev
gs-gcp-batch-retail/
├── ingestion/
│ ├── main.py # Entry point Cloud Functions
│ ├── simulator.py # Generador de ventas diarias
│ └── requirements.txt
├── dbt/
│ ├── models/
│ │ ├── bronze/ # Vista sobre External Table
│ │ ├── silver/ # Limpio, PII enmascarado
│ │ └── gold/ # Star Schema
│ └── macros/
│ └── mask_pii.sql # Cumplimiento Ley 21.719
├── docs/
│ ├── adr/ # Architecture Decision Records
│ └── runbooks/ # Procedimientos operacionales
└── .github/workflows/
├── ci.yml # dbt tests en pull requests
└── cd.yml # dbt prod + deploy en schedule