https://github.com/marcosach/tp-infra
Este repositorio contiene todos los archivos que componen al trabajo práctico final de la materia Infraestructura para la Ciencia de Datos de la Licenciatura en Ciencia de Datos (UNSAM).
https://github.com/marcosach/tp-infra
bigquery buckets datamart datawarehouse etl gcp gcs pipelines python sql
Last synced: 5 months ago
JSON representation
Este repositorio contiene todos los archivos que componen al trabajo práctico final de la materia Infraestructura para la Ciencia de Datos de la Licenciatura en Ciencia de Datos (UNSAM).
- Host: GitHub
- URL: https://github.com/marcosach/tp-infra
- Owner: MarcosACH
- Created: 2025-08-07T22:58:28.000Z (5 months ago)
- Default Branch: main
- Last Pushed: 2025-08-08T13:43:56.000Z (5 months ago)
- Last Synced: 2025-08-08T15:25:44.321Z (5 months ago)
- Topics: bigquery, buckets, datamart, datawarehouse, etl, gcp, gcs, pipelines, python, sql
- Language: Jupyter Notebook
- Homepage:
- Size: 627 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# TP Final - Infraestructura para Ciencia de Datos
**Universidad Nacional de San Martín (UNSAM)**
**Licenciatura en Ciencia de Datos**
*Integrantes:* Lucas Golchtein, Marcos Achaval, Ludmila Cáceres, Iván Vergara
---
## Descripción del Proyecto
Este proyecto implementa una **arquitectura completa de datos** que incluye:
- **Generación de datos sintéticos** de ventas para distribuidoras
- **Pipeline ETL** para procesar datos desde Storage hasta Data Marts
- **Data Warehouse** con esquema estrella
- **Data Marts especializados** por área de negocio
## Arquitectura
```
📁 Datos Raw (Google Cloud Storage)
↓
📊 Dataset RAW (BigQuery)
↓
🏢 Data Warehouse (BigQuery)
↓
📈 Data Marts (BigQuery)
├── Marketing
├── Logística
└── Finanzas
```
## Estructura del Proyecto
```
tp-infra/
├── 📁 src/ # Código fuente
│ ├── crear_raw.py # Carga datos RAW
│ ├── crear_data_warehouse.py # Construye DWH
│ ├── crear_data_marts.py # Construye Data Marts
│ └── generador_de_archivos.ipynb # Generación de datos
├── 📁 config/ # Configuración
│ └── config.py # Variables centralizadas
├── 📁 docs/ # Documentación
│ ├── der_estrella_dwh.mermaid # Diagrama DER
│ ├── diagrama_flujo_informacion.drawio # Diagrama de flujo
│ ├── especificación.xlsx # Especificaciones del proyecto
│ └── presentación_final.pdf # Presentación del TP
├── .env.example # Plantilla de configuración
├── .gitignore # Archivos ignorados
├── requirements.txt # Dependencias Python
└── README.md # Este archivo
```
## Configuración
### 1. Prerrequisitos
- **Python 3.8+**
- **Cuenta de Google Cloud Platform**
- **Proyecto en GCP con BigQuery habilitado**
- **Bucket en Google Cloud Storage**
### 2. Instalación
```bash
# Clonar repositorio
git clone https://github.com/MarcosACH/tp-infra.git
cd tp-infra
# Instalar dependencias
pip install -r requirements.txt
# Configurar credenciales
cp .env.example .env
# Editar .env con tus credenciales reales
```
### 3. Configurar Credenciales
1. **Crear archivo `.env`** desde la plantilla:
```bash
cp .env.example .env
```
2. **Descargar credenciales de GCP**:
- Ve a Google Cloud Console
- IAM & Admin → Service Accounts
- Crea/descarga archivo JSON de credenciales
3. **Completar `.env`**:
```bash
GCP_PROJECT_ID=tu-proyecto-gcp
GCP_BUCKET_NAME=tu-bucket-datos
GOOGLE_APPLICATION_CREDENTIALS=./config/tu-archivo-credenciales.json
```
## Uso
### Generar Datos Sintéticos
1. Abrir `src/generador_de_archivos.ipynb`
2. Configurar parámetros (días, distribuidores, clientes)
3. Ejecutar todas las celdas
4. Los datos se suben automáticamente a Google Cloud Storage
### Ejecutar Pipeline Completo
```bash
cd src
python crear_raw.py # 1. Cargar datos RAW
python crear_data_warehouse.py # 2. Construir DWH
python crear_data_marts.py # 3. Construir Data Marts
```
## Datasets Generados
### RAW Layer
- `archivos_maestro` - Información de clientes y sucursales
- `archivos_stock` - Inventario por producto y fecha
- `archivos_ventaclientes` - Transacciones de ventas
### Data Warehouse
- **Dimensiones**: `dim_cliente`, `dim_producto`, `dim_fecha`, `dim_sucursal`
- **Hechos**: `fact_ventas`, `fact_stock`
### Data Marts
- **Marketing**: Análisis de ventas por cliente, producto y región
- **Logística**: Optimización de rutas y distribución geográfica
- **Finanzas**: Control de ingresos, costos y deudas
## Tecnologías Utilizadas
- **Python 3.8+** - Lenguaje principal
- **Google Cloud BigQuery** - Data Warehouse
- **Google Cloud Storage** - Almacenamiento de archivos (Bucket)
- **Pandas** - Manipulación de datos
- **Faker** - Generación de datos sintéticos
- **Jupyter Notebooks** - Análisis exploratorio
## Equipo
**Grupo 2 - Infraestructura para Ciencia de Datos**
Universidad Nacional de San Martín (UNSAM)
*Integrantes:* Lucas Golchtein, Marcos Achaval, Ludmila Cáceres, Iván Vergara
## Licencia
Este proyecto es parte del trabajo práctico final de la materia Infraestructura para Ciencia de Datos.
---
## Ayuda y Solución de Problemas
### Error de Credenciales
```bash
# Verificar que el archivo .env existe y tiene las variables correctas
cat .env
```
### Error de Permisos en GCP
- Verificar que el Service Account tiene permisos de BigQuery Admin
- Verificar que el Service Account tiene permisos de Storage Admin
### Error de Dependencias
```bash
# Reinstalar dependencias
pip install -r requirements.txt --upgrade
```