¿Se puede construir un cubo OLAP donde los detalles del modelo no se conocen de antemano?

StackOverflow https://stackoverflow.com/questions/1002334

  •  05-07-2019
  •  | 
  •  

Pregunta

Perdóneme por la lanuda pregunta: no estoy realmente tan familiarizado con OLAP & amp; cubitos. Déjame explicarte mi situación ...

Me gustaría construir una base de datos para almacenar los resultados del cuestionario, donde podría haber unas pocas docenas de preguntas por cuestionario. Habiendo reunido unos cuantos miles de cuestionarios completados, me gustaría analizar los resultados, y eso suena como un buen candidato para cosas de tipo OLAP (de las cuales sé muy poco). Necesito poder realizar consultas sobre " todos los encuestados varones de 20 a 30 años de edad que tienen un perro " - es decir, combinando las respuestas a " ¿cuántos años tienes " ;, " tienes un perro " ;, etc.

También quiero poder almacenar los resultados de la encuesta del mes siguiente, y el mes siguiente, etc., y realizar consultas que muestren este mes frente al último, etc. Hasta ahora, bien, supongo.

Aquí está el nudo de mi pregunta: mientras que este mes mi cuestionario puede tener preguntas sobre sexo, edad y amp; propiedad del perro, el cuestionario del próximo mes podría incluir una pregunta sobre (por ejemplo) el color de los ojos. Podría (o no) también caer algunas preguntas. ¿Es posible hacerlo en el mundo OLAP o necesita conocer todas las " dimensiones " (si estoy usando el término correcto) de antemano cuando diseñas tu cubo?

Además, si estoy ejecutando varias encuestas diferentes con preguntas diferentes pero que se solapan, ¿puedo almacenarlas todas en el mismo cubo y realizar consultas en todas las encuestas? Cada encuesta puede tener unas pocas docenas de preguntas, con un par de docenas que se superponen con otras encuestas. ¿Los sistemas OLAP se adaptan a este tipo de cosas? Simplemente no sé qué tan rígidos son, y si son de hecho apropiados para este tipo de uso.

Cualquier ayuda muy apreciada.

PS. Antes de que alguien lo sugiera, acabo de comprar el kit de herramientas de almacenamiento de datos de Kimball pero aún no he tenido la oportunidad de leerlo. (Sospecho que puede que no responda directamente a esta pregunta de todos modos).

¿Fue útil?

Solución

Hay un informe técnico aquí que tiene una sección que cubre datos de encuestas de modelos. Este es quizás el tipo de cosa que estás buscando.

Otros consejos

Comenzaré diciendo que también soy un novato de OLAP, pero creo que tengo una idea de lo que estás buscando lograr.

En efecto, sus preguntas son una de sus dimensiones, la respuesta a esa pregunta es parte de la tabla de hechos, es decir, la tabla de hechos tiene la respuesta y tiene dimensiones asociadas para la edad, el sexo, la localidad (quizás), las preguntas. Puede sentirse un poco atrás, pero eso es algo con lo que estoy llegando a un acuerdo para OLAP.

También es posible que desee otra dimensión relacionada con la pregunta que los agrupa en cuestionarios, pero que podría ser un valor en la dimensión de la pregunta en sí, es decir, la pregunta {QuestionnaireID = 1, QuestionNumber = 4, QuestionText = " ¿Tiene un perro? ? " }.

No estoy seguro de si eso ayuda, pero espero que te dé algunas ideas, si no otra cosa.

Otro novato de OLAP aquí también ...

1) Solo tengo experiencia en la creación de cubos OLAP con Mondrian (Pentaho), que le permite revisar el esquema del cubo, que es solo un archivo XML, y reconstruirlos (o en lenguaje Pentaho, publicar). Por lo tanto, para esa plataforma, de todos modos, no existen tales requisitos para conocer todas sus dimensiones con anticipación

2) Estoy de acuerdo con la recomendación de Lazurus sobre crear una dimensión de preguntas. No es un requisito que cada uno de sus " hechos " tiene un valor que está presente en todas las dimensiones, así que si tuviera que buscar en la dimensión " Pregunta n " ;, entonces creo que solo debería proporcionarle datos para los cuestionarios donde " Pregunta n " Es una dimensión relevante.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top