Proyecto de portfolio centrado en modelado dimensional, transformación de datos y análisis con SQL sobre una plataforma ficticia de cursos online.
El objetivo es demostrar de forma práctica el diseño de un modelo analítico en estrella, un flujo de carga desde una tabla de staging y el uso de SQL para obtener métricas y análisis sobre un escenario de negocio.
- Modelado dimensional con tabla de hechos y dimensiones
- Carga y transformación desde una capa RAW / staging
- Claves primarias y foráneas
- Reglas de negocio y segmentaciones
- Funciones y vistas SQL
- Agregaciones y JOINs
- CTEs y funciones ventana
- Consultas de validación
- Análisis exploratorio con SQL
El proyecto utiliza 24 registros sintéticos creados específicamente para fines educativos y de demostración.
No se ha importado ningún dataset de Kaggle, Udemy ni otra fuente externa, por lo que las métricas incluidas no representan datos reales de ninguna plataforma.
El modelo utiliza una tabla de hechos central, fact_courses, conectada con las siguientes dimensiones:
dim_coursedim_subjectdim_leveldim_price_segmentdim_date
El grano de fact_courses es un registro por curso cargado en el dataset de ejemplo.
La dimensión temporal representa la fecha de publicación del curso. Por este motivo, los análisis temporales agrupan las métricas por año de publicación y no representan una serie histórica de la demanda.
Crea la base de datos y el modelo dimensional:
- dimensiones
- tabla de hechos
- claves y relaciones
- función
get_price_segment() - vista
vw_courses_summary
El script elimina y recrea la base de datos
course_platform_dw. Debe ejecutarse únicamente en un entorno destinado a esta práctica.
La vista utiliza dim_price_segment como fuente de verdad para el segmento de precio. La función get_price_segment() se conserva como ejemplo de lógica reutilizable y se utiliza de forma demostrativa en el EDA.
Construye la capa de staging y realiza la carga de los datos sintéticos:
- recreación y carga de la tabla RAW
- limpieza del modelo dimensional
- transformación de atributos
- carga de dimensiones
- carga de la tabla de hechos
- ajustes de datos
- confirmación de la transacción
La tabla RAW se recrea antes de iniciar la transacción porque las operaciones DDL utilizadas para crearla producen commits implícitos en MySQL.
La transacción cubre la limpieza mediante DELETE, la carga de dimensiones y hechos y los ajustes posteriores hasta COMMIT.
No se implementa un mecanismo automático de ROLLBACK mediante handlers. Si las sentencias se ejecutan manualmente y se detecta un error antes del COMMIT, el rollback debe ejecutarse explícitamente.
Incluye consultas sencillas para comprobar:
- número de registros RAW
- número de registros de la tabla de hechos
- carga de las dimensiones
- contenido de la vista
- presencia de claves dimensionales obligatorias en
fact_courses
Contiene el análisis exploratorio realizado directamente en SQL:
- KPIs generales
- distribución del catálogo
- demanda por categoría
- engagement y valoraciones
- análisis según año de publicación
- segmentación de precios
- rankings mediante funciones ventana
- análisis mediante CTEs
- estimaciones económicas hipotéticas
- MySQL 8.0 o superior
- Cliente compatible con
DELIMITERpara la creación de la función SQL
El proyecto utiliza sintaxis específica de MySQL y no está diseñado para ejecutarse sin cambios en PostgreSQL, SQL Server o SQLite.
01_schema.sql02_data.sqlauxiliares.sql— validación opcional03_eda.sql
Las métricas económicas son estimaciones hipotéticas construidas sobre datos sintéticos y supuestos simplificados. No representan ingresos reales.
Los análisis relacionados con suscriptores y fechas agrupan las métricas existentes según el año de publicación del curso. No constituyen una serie histórica de la evolución de la demanda.
La CTE utilizada en el EDA selecciona categorías con menos de cinco cursos y las ordena por suscriptores acumulados. No aplica ningún criterio adicional de “alta demanda” ni pretende demostrar por sí sola una oportunidad de negocio.
El objetivo del repositorio es demostrar competencias de SQL, modelado dimensional y razonamiento analítico, no reproducir el comportamiento real de una plataforma comercial.
Este proyecto se distribuye bajo la licencia MIT. Consulta LICENSE para más información.