¡Bienvenido/a a mi proyecto de Data Warehouse orientado a un escenario de ventas minoristas!
Este repositorio ilustra cómo diseñar un esquema en estrella (dimensiones y hechos), poblarlo con datos de ejemplo y ejecutar consultas analíticas para extraer información clave del negocio.
La idea central es simular la operación de un minorista que vende productos de distintas categorías a diversos clientes. Las transacciones (ventas) se registran en una tabla de hechos y cada elemento (productos, clientes, fechas) se gestiona en tablas de dimensión.
Objetivo principal:
- Mostrar un ciclo básico de creación de tablas, inserción de datos y consultas de tipo analítico.
- Permitir el análisis de métricas de negocio (productos más vendidos, ingresos por categoría, clientes con mayor gasto, etc.).
- retail-data-warehouse/
- README.md <-- Explicación general del proyecto
- diagrams/
- data_model.png <-- Diagrama del modelo de datos (ER o en estrella)
- sql/
- create_tables.sql <-- Script para crear las tablas (dimensiones y hechos)
- insert_data.sql <-- Script para insertar datos ficticios
- queries.sql <-- Consultas analíticas de ejemplo
- ...
README.md: Este archivo que estás leyendo, con la documentación del proyecto.diagrams/: Contiene imágenes o diagramas que explican la estructura de la base de datos.sql/: Incluye scripts.sqlpara reproducir la base de datos, cargar datos y ejecutar consultas.
El modelo de datos se basa en un enfoque en estrella (star schema), con una tabla de hechos que almacena las ventas y varias tablas de dimensión:
fact_sales- sales_id (PK)
- product_id (FK)
- customers_id (FK)
- date_id (FK)
- quantity_sold
- total_amount
Esta tabla consolida la información de qué producto se vendió, a qué cliente, en qué fecha, la cantidad y el importe total.
-
dim_productsproduct_id,product_name,category,price,stock, etc.
-
dim_customerscustomers_id,first_name,last_name,email,city, `country`, etc.
-
dim_datedate_id,year,month,day,weekday, etc.
Cada tabla dimensión describe en detalle una entidad concreta (productos, clientes, calendario) que se relaciona con la tabla de hechos.
A continuación, un breve instructivo para quienes quieran ejecutar este proyecto en su entorno local:
-
Clonar o descargar el repositorio:
git clone https://github.com/tu-usuario/retail-data-warehouse.git cd retail-data-warehouse/sql -
Crear la base de datos en tu motor preferido (MySQL, por ejemplo):
CREATE DATABASE mi_datawarehouse; USE mi_datawarehouse; -
Ejecutar el script de creación de tablas:
SOURCE create_tables.sql;Esto creará las tablas
dim_products,dim_customers,dim_dateyfact_sales, entre otras que hayas definido. -
Cargar datos ficticios:
SOURCE insert_data.sql;Este script inserta categorías, productos, clientes, fechas, etc., así como registros de ventas.
-
Probar las consultas analíticas (opcional pero recomendado):
SOURCE queries.sql;Verás resultados como los top 5 productos más vendidos, ingresos por categoría, clientes con mayor gasto, etc.
En el archivo queries.sql hemos incluido ejemplos de consultas típicas en un escenario de retail:
-
Top 5 productos más vendidos
- Muestra qué productos registran más ventas (
quantity_sold).
- Muestra qué productos registran más ventas (
-
Ingresos totales por categoría
- Suma los montos de venta según la categoría de producto.
-
Clientes con mayor gasto acumulado
- Identifica a los mejores clientes en función del total gastado.
-
Ventas agregadas por mes/año
- Usando la tabla
dim_date, se puede agrupar por año, mes o día.
- Usando la tabla
Cada consulta está comentada para explicar su objetivo y los campos involucrados.
- Agregar más dimensiones: Por ejemplo, empleados, proveedores, medios de pago, etc.
- Incluir stored procedures: Para automatizar el cálculo de KPIs.
- Crear vistas (views): Que simplifiquen la consulta de datos agregados.
- Implementar índices: Para optimizar el rendimiento en consultas grandes.
- Dashboard en BI: Conectar Power BI/Tableau y mostrar visualizaciones interactivas.
- Este proyecto se hizo con fines educativos, para practicar modelado de datos, SQL y pensamiento analítico.
- Si deseas contribuir con correcciones o mejoras, envía un pull request o crea un issue.
Autor: [Gabriel Hidalgo / https://github.com/HidoGG]
- Email: gabriel.hid.orl@gmail.com
Si tienes sugerencias o preguntas, ¡no dudes en contactarme!
Explora el repositorio, ejecuta los scripts y aprende sobre la construcción de un pequeño Data Warehouse para un entorno minorista. Esperamos que te sirva como base para desarrollar tus propias soluciones de análisis de datos.