Skip to content

About

Batch data pipeline for retail inventory management | GCP · dbt · BigQuery · Cloud Functions · Medallion · Star Schema

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

23 Commits

Folders and files

Repository files navigation

gs-gcp-batch-retail

El Problema

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.

La Solución

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.

Python dbt BigQuery CD

→ Dashboard en Vivo — actualizado diariamente a las 02:00 AM hora Santiago.


Arquitectura

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

Stack Tecnológico

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

Pipeline

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.

Calidad de Datos

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.

Cómo Ejecutar

# Generar y subir datos diarios
python ingestion/simulator.py

# Ejecutar transformaciones
cd dbt
dbt run --target dev
dbt test --target dev

Estructura del Proyecto

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

Decisiones de Arquitectura

  • ADR-001 — Star Schema vs Data Vault
  • ADR-002 — Cloud Functions vs Cloud Run
  • ADR-003 — Consola vs Terraform

About

Batch data pipeline for retail inventory management | GCP · dbt · BigQuery · Cloud Functions · Medallion · Star Schema

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages