¿Cuál es la ventaja de utilizar una tabla de dimensiones de date para almacenar directamente una date?

Tengo la necesidad de almacenar un historial bastante grande de datos. He estado investigando las mejores forms de almacenar dicho file. Parece que un enfoque de datawarehouse es lo que necesito abordar. Parece muy recomendable utilizar una tabla de dimensiones de date en lugar de una date en sí misma. ¿Alguien puede explicarme por qué una table separada sería mejor? No necesito resumir ninguno de los datos, solo acceder de manera rápida y eficiente para cualquier día dado en el pasado. Estoy seguro de que me falta algo, pero no veo cómo almacenar las dates en una tabla separada es mejor que almacenar una date en mi file.

He encontrado estas publicaciones esclarecedoras, pero nada que responda completamente mi pregunta.

  • ¿Qué debería tener en count al build una solución OLAP desde cero?
  • Tabla de dates / consulta de dimensiones e índices
  • ¿Cuál es la mejor manera de almacenar datos históricos en SQL Server 2005/2008?
  • ¿Cómo crear una tabla histórica de hechos?

Bueno, una ventaja es que, como dimensión, puede almacenar muchos otros attributes de la date en esa otra tabla: ¿es un día festivo? ¿Es un día laborable, en qué trimestre fiscal se encuentra? ¿Cuál es el desplazamiento UTC para un determinado (o múltiples) zonas horarias, etc. etc. Algunas de ellas pueden calcularse en time de ejecución, pero en muchos casos es mejor (o solo posible) precalcular.

Otra es que si solo almacena el DATE en la tabla, solo tiene una opción para indicar una date faltante (NULL) o necesita comenzar a devise dates de token sin sentido como 1900-01-01 para significar una cosa (falta porque usted no lo sé) y 1899-12-31 significa otro (falta porque la tarea todavía está en ejecución, la persona todavía está viva, etc.). Si usa una dimensión, puede tener varias filas que representan razones específicas por las que la FECHA es desconocida / falta, sin ningún valor "mágico".

Personalmente, preferiría simplemente almacenar un DATE, porque es más pequeño que un INT (!) Y guarda todo tipo de properties relacionadas con la date, la capacidad de realizar cálculos matemáticos de dates, etc. Si el motivo por el que falta la date es importante, Siempre podría agregar una columna a la tabla para indicar eso. Pero estoy respondiendo con el sombrero de almacenamiento de datos de otra persona.

Digamos que tienes mil inputs por día durante el último año. Si tiene una dimensión de date, su consulta toma la date en la dimensión de date y luego utiliza la combinación para recostackr las mil inputs que le interesan. Si no hay una dimensión de date, su consulta lee las 365 mil filas para encontrar las mil usted quiere. Más rápido, más eficiente.