Skip to content

lopezparrai/DataShop-SQL-PowerBI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🛒 DataShop — Data Warehouse + ETL + Power BI

Pipeline completo de Business Intelligence para la empresa ficticia DataShop: desde el diseño del modelo dimensional hasta un tablero analítico en Power BI, pasando por la implementación del Data Warehouse en SQL Server y el proceso ETL en Python.

Dashboard


📌 Descripción

Este proyecto implementa un Data Warehouse siguiendo un esquema en estrella, con un pipeline ETL de tres etapas (staging → intermediate → final) que procesa más de 20.000 registros de ventas distribuidos entre productos, clientes y tiendas.

El tablero final en Power BI permite analizar el desempeño de ventas por período, tienda, producto y cliente, con KPIs clave y comparativas mensuales.


🗂️ Estructura del repositorio

DataShop-SQL-PowerBI/
│
├── data/                          # Archivos fuente
│   ├── clientes.csv
│   ├── tiendas.csv
│   ├── productos.csv
│   └── ventas.csv
│
├── docs/                          # Diagramas y documentación
│   └── DW_Diagrama_DataShop.png
│
├── sql/                           # Scripts SQL (ejecutar en orden)
│   ├── 01_DW_Script_Estructura.sql
│   ├── 02_DW_DataShop_StoredProcedures.sql
│   └── 03_etl_carga_Dim_Tiempo.sql
│
├── etl/                           # Scripts ETL en Python
│   ├── staging/                   # Carga CSV → tablas Stg_*
│   │   ├── etl_carga_Stg_Dim_Producto.py
│   │   ├── etl_carga_Stg_Dim_Cliente.py
│   │   ├── etl_carga_Stg_Dim_Tienda.py
│   │   └── etl_carga_Stg_Fact_Ventas.py
│   ├── intermediate/              # Limpieza y transformación → Int_*
│   │   ├── etl_carga_Int_Dim_Producto.py
│   │   ├── etl_carga_Int_Cliente.py
│   │   ├── etl_carga_Int_Tienda.py
│   │   └── etl_carga_Int_Fact_Ventas.py
│   └── final/                     # Carga final → Dim_* y Fact_*
│       ├── etl_carga_Dim_Producto.py
│       ├── etl_carga_Dim_Cliente.py
│       ├── etl_carga_Dim_Tienda.py
│       └── etl_carga_Fact_Ventas.py
│
├── powerbi/
│   └── Dashboard_DataShop.pbix
│
├── screenshots/                   # Capturas del dashboard
└── README.md

🏗️ Modelo dimensional

El DW sigue un esquema en estrella con las siguientes tablas:

  • Dimensiones: Dim_Producto, Dim_Cliente, Dim_Tienda, Dim_Tiempo
  • Tabla de hechos: Fact_Ventas
  • Tablas de staging: Stg_* — carga directa desde CSV
  • Tablas intermedias: Int_* — limpieza y normalización

Esquema en estrella


🔄 Pipeline ETL

El proceso ETL se ejecuta en tres etapas secuenciales:

1. Staging — Los scripts en etl/staging/ leen los archivos CSV de data/ y los cargan sin transformaciones en las tablas Stg_*.

2. Intermediate — Los scripts en etl/intermediate/ aplican limpieza, normalización y validaciones, escribiendo el resultado en las tablas Int_*.

3. Final — Los scripts en etl/final/ pueblan las tablas definitivas del DW (Dim_* y Fact_Ventas). La Dim_Tiempo se genera directamente desde SQL mediante el stored procedure Sp_Genera_Dim_Tiempo.


📊 Dashboard Power BI

El archivo .pbix contiene 4 hojas:

Hoja Descripción
KPIs de Ventas Indicadores clave y gráficos por año/mes, tienda y clientes
KPIs de Productos y Clientes Métricas por categoría, tienda y producto
Detalle de Ventas Tabla completa con todas las transacciones
Comparativa por Tienda Matriz de ventas con variación mensual

Screenshots

KPIs de Ventas
KPIs de Productos y Clientes
Detalle de Ventas
Comparativa por Tienda

🚀 Cómo ejecutar el proyecto

1. Crear la base de datos

Ejecutar los scripts en SQL Server Management Studio en el siguiente orden:

-- 1. Crear estructura del DW (tablas Stg_, Int_, Dim_, Fact_)
01_DW_Script_Estructura.sql

-- 2. Crear stored procedures de carga
02_DW_DataShop_StoredProcedures.sql

-- 3. Poblar la Dim_Tiempo
03_etl_carga_Dim_Tiempo.sql

2. Ejecutar el ETL

# Etapa 1: Staging
python etl/staging/etl_carga_Stg_Dim_Producto.py
python etl/staging/etl_carga_Stg_Dim_Cliente.py
python etl/staging/etl_carga_Stg_Dim_Tienda.py
python etl/staging/etl_carga_Stg_Fact_Ventas.py

# Etapa 2: Intermediate
python etl/intermediate/etl_carga_Int_Dim_Producto.py
python etl/intermediate/etl_carga_Int_Cliente.py
python etl/intermediate/etl_carga_Int_Tienda.py
python etl/intermediate/etl_carga_Int_Fact_Ventas.py

# Etapa 3: Final
python etl/final/etl_carga_Dim_Producto.py
python etl/final/etl_carga_Dim_Cliente.py
python etl/final/etl_carga_Dim_Tienda.py
python etl/final/etl_carga_Fact_Ventas.py

3. Abrir el dashboard

Abrir powerbi/Dashboard_DataShop.pbix en Power BI Desktop y actualizar la conexión a la base de datos local.


🛠️ Herramientas utilizadas

  • SQL Server — Implementación del Data Warehouse
  • Python — Scripts ETL (pandas, pyodbc)
  • Power BI Desktop — Modelado, DAX y visualización

👤 Autor

Ignacio López Parra
Proyecto personal de Business Intelligence.

About

Pipeline completo de Business Intelligence: Data Warehouse en SQL Server con esquema en estrella, ETL de 3 etapas (staging → intermediate → final) en Python, y dashboard analítico en Power BI sobre más de 20.000 registros de ventas.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors