1.
Para el caso propuesto de la cadena de farmacias, se recomienda utilizar una granularidad fina
a nivel de ítem de línea de transacción.
Es decir, cada fila en la tabla de hechos Ventas debe representar un producto específico
vendido en una transacción (ticket) específica, en una farmacia específica, en un momento
específico.
¿Por qué esta es la elección correcta?
Porque es la única granularidad que permite responder de manera efectiva, flexible y precisa
las tres métricas solicitadas (Promociones semanales, Tendencias anuales y Hábitos de compra
por cliente)
Análisis de cómo esta granularidad responde a cada métrica:
1. Promociones semanales
Cómo lo permite: Al tener cada producto vendido en una fila individual, puedes:
Filtrar fácilmente los productos que estaban en promoción (usando un flag en la dimensión
Producto o una clave a una dimensión Promoción).
Agrupar las ventas por Semana (de la dimensión Tiempo) y por Producto.
Comparar las unidades vendidas y el revenue de cada producto en semanas con y sin
promoción.
Con una granularidad gruesa (ej., ventas semanales por producto), ya estarías perdiendo la
capacidad de saber cuándo exactamente dentro de esa semana se aplicó la promoción, o de
correlacionar las promociones con picos de venta en días específicos.
2. Tendencias anuales
Cómo lo permite: Desde el nivel atómico, puedes agregar las ventas (SUM(importe_total)) a
cualquier nivel de la dimensión de tiempo: hora, día, semana, mes, trimestre, año.
Puedes crear una tendencia anual agregando por Año y Mes para ver la evolución mes a mes.
Puedes analizar estacionalidades con gran detalle (ej., ventas los fines de semana vs. días de
semana).
Con una granularidad gruesa (ej., ventas mensuales por categoría), podrías ver la tendencia
general, pero no podrías "profundizar" (drill-down) para ver qué productos o qué días
concretos impulsaron esa tendencia.
3. Hábitos de compra por cliente
Cómo lo permite: Esta es la métrica que más exige una granularidad fina.
Frecuencia de Compra: Necesitas contar el número de id_ticket únicos por cliente en un
período.
Ticket Promedio: Necesitas sumar el importe_total de todos los ítems de un ticket y
promediarlo entre todos los tickets del cliente.
Productos Cruzados (Market Basket Analysis): Para saber qué productos compra juntos un
cliente, necesitas ver todos los ítems que aparecieron en un mismo id_ticket.
Hora preferida de compra: Necesitas la fecha y hora exacta de cada transacción.
Una granularidad gruesa hace que este análisis sea imposible. Si la tabla ya está agregada a
nivel semanal, has perdido toda la información sobre el comportamiento individual del cliente
en cada visita.