¿Es una buena idea usar disparadores para vincular la dimensión de tiempo en tablas de hecho en una casa de software de datos?

Estoy en el medio del diseño de una casa de software de datos. Hay varias tablas de hechos y es muy probable que se inserten cientos de hechos en cada tabla de hechos. Aunque es un poco temprano, todavía estaba pensando en optimizaciones.

Tengo dos mesas por tiempo

  • fecha (fila única para cada día)
  • hora del día (fila única para cada minuto de un día)

en todas mis tablas de hechos tengo la columna de fecha completa.

¿Qué dice su experiencia? ¿Debería usar declaraciones de selección en el código para consultar los ID de dimensión de la tabla de dimensión de tiempo o permito que las columnas de dimensión de tiempo en las tablas de hecho sean nulas y use desencadenadores para completar los valores?

preguntado el 16 de mayo de 11 a las 20:05

jajaja cuando leí esta pregunta pensé que estaba en el foro de física :) -

2 Respuestas

Las dimensiones de fecha y hora son el caso (muy inusual) en el almacenamiento de datos cuando una clave sustituta con valores "mágicos" resulta beneficiosa. Puede crear claves primarias en la dimensión de fecha números enteros con valores como 20110516 y en las dimensiones de hora del día 1 - 1440 o 1 - 2400.

Sugiero calcular los valores correspondientes en sus registros de hechos y agregar campos para ellos, digamos, CALENDAR_ID, TIME_OF_DAY_ID. Dependiendo del tamaño de sus datos, es probable que se beneficie de la indexación en CALENDAR_ID y, tal vez, incluso de la partición. Si está seguro de la calidad de sus datos, puede omitir las restricciones de clave externa en estos campos para obtener algo de rendimiento durante la carga.

contestado el 17 de mayo de 11 a las 00:05

+1 por señalar los valores mágicos. Estos consejos son más que bienvenidos. Me acabo de dar cuenta de que no puedo votar, pero gracias. - WPFAbsoluteNewBie

@WPFAbsoluteNewBie: Si no puede votar a favor, siempre puede aceptar la respuesta ;-) - Olaf

  • No se permiten nulos para FK en tablas de hechos.
  • Simplemente use su ETL para buscar claves de la dimensión de fecha y hora para cada fila de la tabla de hechos.
  • No hay activadores en DW, toda la carga y búsqueda de claves se realiza a través de la aplicación ETL.

contestado el 17 de mayo de 11 a las 01:05

Gracias. que responde a mi pregunta. Pero, ¿puede explicarme por qué no debería usar desencadenantes? por supuesto, cuando dije que permitiría nulos, quise decir que no las convertiría en claves externas también. - WPFAbsoluteNewBie

@WPFAbsoluteNewBie, con los EDW desea acelerar la carga tanto como sea posible. Existen técnicas para eso y todas las herramientas ETL proporcionan todo lo que necesita para cargar dimensiones y hechos. Tener un disparador simplemente ralentiza las cosas (se activa en inserciones / actualizaciones) y también mueve un paso ETL (búsqueda) fuera de su aplicación ETL, por lo que ahora tiene dos lugares para administrar esto. - Damir Sudarevic

@WPFAbsoluteNewBie, "Columnas de dimensión en tablas de hechos" son FK. - Damir Sudarevic

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.