En los anteriores comentarios de esta serie sobre cómo construir un datawarehouse, explicaba las características de las dimensiones y las jerarquías. Sin embargo, estaba omitiendo un aspecto principal de estas tablas.
La información de las dimensiones no es estática, ya que puede modificarse en el operacional por diferentes motivos. Por ejemplo, puede corregirse la fecha de nacimiento de un cliente, o éste puede cambiar de ciudad, o una delegación puede asignarse a un delegado diferente, etc. ¿Cómo debe gestionarse esta información?
En primer lugar, debe tenerse en cuenta que el tratamiento que se realizará dependerá de cada dimensión y de las necesidades del negocio. Por ejemplo, si se actualiza la fecha de nacimiento de un cliente se puede asumir que ese cambio aplica a toda la historia de ese cliente. Sin embargo, existen casos donde la información dimensional histórica es importante. Considera estas dos situaciones:
Previsión de ventas: Para realizar una previsión de ventas para el próximo año, deberemos considerar las ventas históricas de las tiendas que actualmente tiene asignado cada delegado.
Análisis de márgenes: Si queremos analizar los descuentos que aplica cada delegado, deberemos considerar las ventas de aquellas tiendas que han tenido asignadas a lo largo del tiempo.
Por lo tanto, en este ejemplo, deberemos modelizar la información de tal modo que seamos capaces de conocer el "delegado actual" y el "delegado/s histórico/s".
Para conseguir este objetivo se introducen las "claves subrogadas", que son identificadores sin ningún significado específico para el negocio. Aunque existen diferentes maneras de modelizar estos datos, lo habitual es trabajar con las "fechas de vigencia". Por ejemplo, esta sería la estructura de la tabla de DELEGACIONES en el modelo relacional:

Analizando cuidadosamente los valores de esta tabla, puede observarse que Pedro era el responsable de las delegaciones de Madrid y Barcelona, y que sus funciones fueron asumidas posteriormente por Juan y María. En el modelo dimensional, la tabla podría modelizarse de este modo:

El sistema funcionaría de manera similar con cualquier otra dimensión que pudiese tener la jerarquía de delegaciones, o cualquier otra jerarquía. Evidentemente, se trata de un tema complejo y que debe considerarse, o caeríamos de lleno en el error número 9:
Error 9: No afrontar el tratamiento de las dimensiones lentamente cambiantes
En cualquier definición del término datawarehouse se menciona que es un repositorio de información histórica, y con ello se pretende enfatizar que contiene:
Pues bien, este segundo punto se suele olvidar (o ignorar) en algunas implantaciones de DWH por las siguientes razones:
No nos dejemos engañar. A pesar de todo esto, la gestión de dimensiones lentamente cambiantes es imprescindible. Personalmente, acostumbro a guardar toda la historia de las dimensiones en el modelo relacional (incluso algunos datos que inicialmente no parecen necesarios como la "fecha de nacimiento"). En el modelo dimensional, de entrada, sólo publico la visión actual, y sólo cuando lo solicita explícitamente el usuario de negocio, añado la visión histórica de esa dimensión.
Categoría: Serie DWH
Palabras clave: DWH
Comentarios: Este artículo tiene 11 comentarios.¡Deja un comentario!
Buen post sobre un tema "lioso". Me atrevo a pedirte que cuando tengas tiempo sigas profundizando con más post en este tema. Gracias y enhorabuena por el blog, es de mucha utilidad para los que estamos entrando en este mundo del BI.
Hola, lo primero enhorabuena por el blog y sobre todo por estos últimos posts. En alguno posterior pordrías profundizar en una problemática de difícil tratamiento como son el cambio en datos ya almacenados en el data con un tipo scd2, p.ej. cuando al mes de cargar datos de un albaran de compra para un determinado articulo se cambia el precio de compra de ese artículo en el albarán en el oltp, ya que en su día hubo un error en la toma de datos en el oltp.
Feliciades por el blog.
Gracias a los dos por los comentarios. Realmente planteáis unos casos interesantes.
Aunque mi idea era evitar que este blog fuese excesivamente técnico,intentaré profundizar sobre las cuestiones que planteáis...
Babuglia, me ha gustado tu blog. No lo conocía. Ya lo he añadido en el panel lateral de links...
Gracias de nuevo.
Buen artículo. Felicidades por el blog.
Coincido con los anteriores comentarios. Excelente serie sobre cómo construir un dwh, y sin olvidar los temas liosos... Felicidades!
Excelentes Pagina, te felicito.
Una Consulta.
Tambien para mantener "historia" las dimensiones se podrian usar tablas o dimensiones historicas?
esto convertiria al DWH en modelo copo de nieve pero creo que es absolutamente necesario.
Saludos
Rodrigo Pizarro
Hola Rodrigo,
Gracias por tu comentario.
No estoy seguro de entender a lo que te refieres cuando hablas de "tablas o dimensiones históricas".
De alguna manera se ha de guardar la historia, y utilizar algún sistema como el de las "fechas de vigencia" es lo habitual.
También se puede tener una tabla con la visión actual, y otra con la historia. Tal vez te refieras a esto. Creo que es poco habitual, y sólo lo utilizaría en el caso de que la información histórica se consulte sólo ocasionalmente...
Otra opción seria hacer una foto de las dimensiones al final de cada mes o cada semana... Esto podría ser útil como registro, pero no seria adecuado desde el punto de vista analítico (no seria fácil consultar esta información).
Buenas tardes,
Tengo que fecilitarte y darta las gracias por el blog en general, tanto este como TodoBi son mis principales referencias en mis inicios en este mundo de la inteligencia de negocios.
Tambein aprovecho para remitirte una duda en cuando el ejmplo de claves subrrogadas (o no está bien o yo no lo entiendo):
- Según las fechas de vigencia en la delegación de Barcelona, el primer delegado fué Pedro hasta 23-may-2008, luego María hasta 31 Diciembre del 2008 y en la actualidad Juan (2100), en otro caso en la de Madrid primero fué Pedro
hasta 31-dic-2008 y en la actualidad María (2100) y tu luego la dices:
"Analizando cuidadosamente los valores de esta tabla, puede observarse que Pedro era el responsable de las delegaciones de Madrid y Barcelona, y que sus funciones fueron asumidas posteriormente por Juan y María."
Y después representas la tabla de dimensión (en cuanto a la delegación de barcelona)como:
delegado actual delegado historico
Juan Pedro
Juan María
Juan Juan
Mi duda es; ¿Como sabes con esta representación quien fue el delegado anterior a Juan(porque según esto podria ser tanto Pedro como María)?Se podría representar así(que errores encontrarías a esta solución)?
delegado anterior delegado actual
María Pedro
Juan María
Juan Juan
Incluso yo incluiría en la tabla de dimensión, las fechas de vigencia (nada que ver con la dimensión fecha del problema en sí)
Muchas gracias y un saludo,
Isaac BG
Perdonar que entre que se ha desformateado la salida. Además quería añadir que los nombres de los atributos que he puesto son muy descriptivos, mejor para la columna de la izquierda diría Delegado-sucesor (que sería igual que el actual en caso de que fuese el que actualmente está a cargo) y la de la derecha Delegado-actual.
Saludos de nuevo,
Isaac BG
Me alegra mucho que te guste este blog. Gracias por los comentarios.
Planteas una interesante cuestión... Y me resultará complicado responderla brevemente desde este comentario... Pero lo intentaré...
El objetivo de modelizarlo de este modo no es para responder la pregunta ¿Quién es el sucesor y el antecesor del delegado X? Esa pregunta se podría responder mirando la tabla del modelo relacional (o tal vez en el operacional)... o preparando alguna tabla en el DWH como la que comentas...
El objetivo de esta modelización es responder a las preguntas... ¿Cuánto ha vendido el delegado X? ¿Cuánto han vendido históricamente las tiendas que pertenecen al delegado X?
Cada venta, a través de su campo ID_DELEGACION, está relacionada con el delegado que realizó la venta, y con el delegado que actualmente se encarga de esa tienda (o delegación)...
Y no sólo las ventas... Todos los hechos están relacionado con el delegado actual y con el delegado vigente en el momento del "hecho"...
Ése, y no otro, es el objetivo.
Ok, no te entendía al principio..pensaba que qiería representar de manera hístorica cáules fueron los delegados en cada delegación..ok..entendido!!!
Gracias de nuevo!
Las metodologías Business Intelligence utilizan la información para mejorar la gestión de las empresas.
Gracias al software de BI, los usuarios pueden acceder y analizar los datos con facilidad, y tomar mejores decisiones.