Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

🚧 Proyecto en construcción 🚧

Retail Data Warehouse

¡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.


1. Descripción General

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.).

2. Estructura del Proyecto

 - 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 .sql para reproducir la base de datos, cargar datos y ejecutar consultas.

3. Modelo de Datos

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:

3.1. Tabla de Hechos

  • 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.

3.2. Tablas de Dimensión

  • dim_products

    • product_id, product_name, category, price, stock, etc.
  • dim_customers

    • customers_id, first_name, last_name, email, city, `country`, etc.
  • dim_date

    • date_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.


4. Pasos para Reproducir el Proyecto

A continuación, un breve instructivo para quienes quieran ejecutar este proyecto en su entorno local:

  1. Clonar o descargar el repositorio:

    git clone https://github.com/tu-usuario/retail-data-warehouse.git
    cd retail-data-warehouse/sql
    
  2. Crear la base de datos en tu motor preferido (MySQL, por ejemplo):

    CREATE DATABASE mi_datawarehouse;
    USE mi_datawarehouse;
    
  3. Ejecutar el script de creación de tablas:

    SOURCE create_tables.sql;
    

    Esto creará las tablas dim_products, dim_customers, dim_date y fact_sales, entre otras que hayas definido.

  4. Cargar datos ficticios:

    SOURCE insert_data.sql;
    

    Este script inserta categorías, productos, clientes, fechas, etc., así como registros de ventas.

  5. 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.


5. Consultas Analíticas Principales

En el archivo queries.sql hemos incluido ejemplos de consultas típicas en un escenario de retail:

  1. Top 5 productos más vendidos

    • Muestra qué productos registran más ventas (quantity_sold).
  2. Ingresos totales por categoría

    • Suma los montos de venta según la categoría de producto.
  3. Clientes con mayor gasto acumulado

    • Identifica a los mejores clientes en función del total gastado.
  4. Ventas agregadas por mes/año

    • Usando la tabla dim_date, se puede agrupar por año, mes o día.

Cada consulta está comentada para explicar su objetivo y los campos involucrados.


6. Mejoras Futuras (Roadmap)

  • 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.

7. Contribuciones

  • 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.

8. Autor y Contacto

Autor: [Gabriel Hidalgo / https://github.com/HidoGG]

Si tienes sugerencias o preguntas, ¡no dudes en contactarme!


¡Gracias por visitar este proyecto!

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.

About

Este proyecto se hizo con fines educativos, para practicar modelado de datos, SQL y pensamiento analítico.

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors