Pregunta

Estoy construyendo un almacén de datos. Cada hecho tiene su timestamp. Necesito crear informes por día, mes, trimestre, pero por horas también. En cuanto a los ejemplos que veo que las fechas tienden a ser guardado en las tablas de dimensiones. alt starexample
(fuente: etl-tools.info )

Pero creo, que no tiene sentido para el tiempo. La tabla de dimensiones sería crecer y crecer. Por otro lado se unan a la fecha tabla de dimensiones es más eficiente que el uso de las funciones de fecha / hora en SQL.

¿Cuáles son sus opiniones / soluciones?

(estoy usando Infobright)

¿Fue útil?

Solución

Mi conjetura es que depende de su requisito de información. Si necesita necesita algo así como

WHERE "Hour" = 10

es decir, todos los días 10:00:00-10:59:59, entonces yo uso la dimensión del tiempo, ya que es más rápido que

WHERE date_part('hour', TimeStamp) = 10  

porque la función date_part () será evaluado para cada fila. Aún debe mantener la marca de hora en la tabla de hechos con el fin de agregar sobre los límites de días, como en:

WHERE TimeStamp between '2010-03-22 23:30' and '2010-03-23 11:15' 

que se pone incómodo al usar campos de dimensión.

Por lo general, la dimensión de tiempo tiene una resolución minuto, por lo que 1440 filas.

Otros consejos

Kimball recomienda que tiene dimensiones tiempo- y fecha separadas:

diseño

TIP-51-última-pensamiento-en-tiempo-dimensión mesas

  

En los libros anteriores Toolkit, que tiene   se recomienda la construcción de una dimensión tan   con el minuto o segundo componente   de tiempo como un desplazamiento desde la medianoche de   cada día, pero nos hemos dado cuenta   que el usuario final resultante   aplicaciones llegaron a ser demasiado difícil,   especialmente cuando se trata de calcular el tiempo   vanos. Además, a diferencia del día natural   dimensión, hay muy pocos   atributos descriptivos para la   minuto específico o dentro de un segundo   día. Si la empresa tiene también   atributos definidos para intervalos de tiempo   dentro de un día, tales como nombres de turno, o   la publicidad de los intervalos de tiempo, un adicional   de tiempo de días dimensión puede ser añadido a   el diseño en el que esta dimensión es   se define como el número de minutos (o   incluso segundos) después de la medianoche. Así, este   dimensión de tiempo-ofday tendrá que o bien   1440 registros si el grano fueron minutos   o 86.400 registros si el grano eran   segundos.

El tiempo debe ser una dimensión de almacenes de datos, ya que con frecuencia tendrá que agregar al respecto. Se podría utilizar el copo-Esquema para reducir la sobrecarga. En general, como he señalado en mi comentario, las horas parecen como una inusualmente alta resolución. Si insiste en ellas, por lo que la hora del día a la ayuda dimensión podría separarse, pero no se puede saber si se trata de un buen diseño.

Yo recomendaría tener dimensión separada para la fecha y la hora. Fecha Dimensión tendría 1 registro para cada fecha como parte del rango válido identificada de fechas. Por ejemplo:. 01/01/1980 hasta 12/31/2025

Y una dimensión separada para tener tiempo de 86.400 registros con cada segundo que tiene un registro identificado por la clave de tiempo.

En los registros de datos, donde u necesita fecha y hora tanto, añadir las dos teclas que tienen referencias a estas dimensiones conformadas.

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