PDA

View Full Version : Cubos Virtuales?



hberges
07-13-2009, 06:47 AM
Hola,

Llevo ya algún tiempo por aquí y llevo clavado en el mismo punto ya unos días así que planteo aquí mi duda primero (si la cosa va mal tb lo pondré en el de inglés).

Escenario:

Dispongo de una tabla en la que cada fila es una acción realizada por un usuario dentro de una especie de centro comercial. Es una tabla gigantesca que ya viene ordenada en la que para cada acción se definen unas 15 columnas con info acerca del visitante, de dónde es, a qué hora hace la acción , qué acción hace (cruzar la puerta de entrada se considera una acción), etc etc etc...

Ejemplo: Pedro (nacido en Miami) entra en el mall por la puerta sur a las 17:00, se compra unas bambas en footlocker a las 17:33, Pedro mira el escaparate de Levi's a las 18:01 y sale por la puerta norte a las 18:05, a su vez, Miguel, de París, entra a las 17:07 por la puerta este, cruza el mall, y sale por la puerta norte a las 17:12, la cosa quedaría así, muy aproximadamente:

formato:
nombre, ciudad, pais, edad, [info personal], id_visita, acción, [contexto acción], tiempo acción, acciones*, etc.etc.etc

ejemplo:

1) Pedro, Miami, USA, 28 años, [blablabla], 1, entrar, [puerta sur,..], 17:00, 1* etc
2) Pedro, Miami, USA, 28 años, [blablabla], 1, comprar, [bambas, footlocker, tarjeta, modelo elquesea], 17:33, 1* etc
3) Pedro, Miami, USA, 28 años, [blablabla], 1 , mirar, [escaparate #2, levi's, 2 minutos...], 18:01, 1*, etc
4) Pedro, Miami, USA, 28 años, [blablabla], 1 , salir, [puerta norte,...], 18:05, 1*, etc
5) Miguel, Paris, Francia, 42 años, [blablabla], 2, entrar [puerta este,...], 17:07, 1*, etc
6) Miguel, Paris, Francia, 42 años, [blablabla], 2, salir [puerta norte, ...], 17:12, 1*, etc..

Bueno, creo que me explicado. Los * vienen porque de alguna manera he de cuantificar las acciones, con lo que para simplificarme la vida y poder agruparlas por cada dimensión las he numerado a cada una con valor "1". Así a posteriori puedo agrupar el número de acciones de la gente por edad o por lo que sea.

De momento lo que he hecho ha sido un cubo enorme conteniendo toda la información de la tabla.

PROBLEMA:
Lo que me interesa también la información por visita, ésto es no la información por acción sino la información relativa a "id_visita".

Mi pregunta es entonces: qué opción consideráis mejor?

1. Hacer dos tablas, una en la que cada entrada (fila) se una visita y contenga la info propia de cada una (como son el nombre, le ciudad y país de origen, la edad, info personal...) y otra con una llave que sea foreign key de la primera tabla con todas las acciones relativas a cada visita...???

2. Mantener el diseño de una sola tabla pero con algún cálculo establecer alguna "medida" que sea el número de visitas. Ésto no se cómo se hace ya que el count no tiene sentido al ser cada fila una acción. Si alguien sabe cómo hacerlo no dude en decírmelo.

Bien, ésto es todo, alguien me dijo que lo hiciera con cubos virtuales, pero realmente no sé cómo funcionan.


Muchas gracias por adelantado!!!

tdidomenico
07-13-2009, 12:33 PM
En este caso lo más indicado parecería ser que "visita" sea una dimensión "degenerada" (por gracioso que suene). La documentación está aquí: http://mondrian.pentaho.org/documentation/schema.php#Degenerate_dimensions

Tener una dimensión "visita" debería permitirte agrupar fácilmente todas las acciones realizadas durante una visita y hacer sumas basadas en el nivel que quieras de la dimensión, incluyendo calcular el número de visitas.

¡Saludos!

hberges
07-13-2009, 01:17 PM
Gracias por la respuesta, al final salí de la confusión y salí adelante con un diseño mucho más sencillo.