Nuestro buen amigo Mauricio Gomez, me escribió hace algunas semanas con algunas preguntas con respecto a sugerencias para diseñar un cubo de ventas para su empresa. Después contar con su consentimiento, publico aquí esa información de manera que pueda servir a muchos de ustedes que también puedan pasar por una situación similar y así aprendemos todos. Mauricio comenzará a implementar este proyecto durante esta semana, así que hemos convenido a que según se encuentre con nuevos retos, él irá publicando sus preguntas a través de la sección de comentarios de este post, así que no olviden echarle un ojo a los comentarios para obtener actualizaciones a este diseño.
Maurico me envió un buen inicio de su modelo de estrellas para su Data Mart que se muestra a continuación:
En resumen estas son las medidas:
- Cantidad vendida (unidades)
- Precio unitario de venta
- Monto total de venta
Y las dimensiones:
- Cliente
- Tipo de cliente
- Empleado (vendedor)
- Tipo de venta
- Producto
- Famila de producto
- Tienda
- Ciudad (de la tienda que vendió)
- Mes_Venta y Dia_Venta (ojo con estas dos)
Muy bien Mauricio señala que con este diseño responde a las preguntas de a Quén se vendió, Cómo se vendió, Cuándo se vendió y Qué se vendió.
Ahora incluyo mi primera respuesta a su email:
“…le heché un ojo al documento y lo primero que debo preguntarte es si has explorado la base de datos de ejemplo que usa Microsoft llamada Adventure Works. El caso que tienes que resolver es bastante idéntico a lo muestra esta base datos. Adventure Works a demás de la DB relacional tiene una base de datos en formato de Data Warehouse llamada AdventureWorksDW. Así mismo viene un proyecto de Analysis Services que tiene todo el diseño de las dimensiones, fact tables, medidas calculadas, tooodo. Para obtener todos los proyectos de Adventure Works debes de bajarla desde este link de CodePlex http://www.codeplex.com/MSFTDBProdSamples tanto para la versión 2005 o 2008 de SQL.
Con respecto al diagrama de estrellas que me enviaste, mi principal sugerencia es que incluyas una dimension Fecha en reemplazo de tus dimensiones Mes_Venta, Dia_Venta. El consolidar estas dimensiones en una sola te dará mucho valor, no sólo ahora para ver tus ventas sino para cualquier otra tabla de hechos que incorpores en el corto plazo a tu data mart además que podrás manejar distintas frecuencias de tiempo que tal vez ahora no te sean muy relevante pero te pueden agregar mucho valor (calendario trimestral, semanal, fiscal, etc.). Este concepto de compartir las dimensiones se llama en inglés "Conforming Dimensions". AdventureWorks tiene el mismo ejemplo para este caso.”
Ahora copio un extracto del data mart de Adventure Works para la parte de ventas por internet (internet sales):
Como se muestra, las dimensiones y medidas que requiere Mauricio, es más, las que requiere un típico escenario de ventas de cualquier compañía, son muy parecidas a las que ya nos muestra Adventure Works, por tanto debemos usarla como una excelente referencia para lo que queremos construir aquí.
Bueno ya presentamos el caso completo, espero que Mauricio nos ponga al tanto de su progreso y de sus actualizaciones. Demás está invitarlos a todos ustedes a que también puedan ayudar a la discusión de este caso, de cómo lo hace Adventure Works y de como modelarlo de la mejor manera.
Alan