Por Rut Almoguera Poggi
Si estas iniciándote en el diseño de DWH hay una
dimensión que deberías conocer pues te va a acompañar en todos los diseños que
realices: La dimensión Time.
Voy a
comenzar este post con una afirmación que
a lo mejor te va a asombrar: La
dimensión Time es una dimensión usada en TODOS los Data Warehouses.
La
primera pregunta que se suele hacerse alguien que esta iniciándose en el diseño
de DWH es ¿Por qué es necesario utilizar una dimensión Time, si se puede
registrar la fecha como un hecho o medición más de la Fact?.
La
respuesta a esa pregunta la encontramos, al igual que las respuestas a todas
las decisiones de diseño en un solo sitio: “Los requerimientos del
Cliente”. Revisando cuales son los
requerimientos de nuestro cliente, cuales son las preguntas que el DWH necesita
responder podremos determinar si necesitamos o no una dimensión Time.
La
experiencia nos dice que los análisis que los clientes quieren hacer suelen ser
cosas como: ver cuando sucedió un evento específico, o hacer comparaciones
entre periodos de tiempo diferentes, por ejemplo en un DWH en donde se guarden
las ventas, podríamos querer comparar las ventas del mes actual con las del mes
anterior, o con este mismo mes pero el año anterior. O podría querer ver el
comportamiento de las ventas en fechas especiales, como por ejemplo el último
día del año o los días cercanos a las quincenas o al cobro de las utilidades.
Además
con frecuencia los Clientes requieren de Cubos n-dimensionales que totalicen la
data a través de las jerarquías de las dimensiones para poder tener respuestas
a todos sus interrogantes, siguiendo con
nuestro ejemplo del DWH de ventas, podría querer ver las ventas diarias, pero
también poder consultar las ventas del semestre actual o del año o del mes, por
lo tanto con declarar la fecha simplemente como un atributo de la tabla Fact no
nos basta, es necesario crear una dimensión.
Dicha
dimensión Time, en ocasiones tiene una gran complejidad, conteniendo una gran
cantidad de información, como por ejemplo los días feriados, el total de días
hábiles del mes, el número de la semana del año a la que pertenece una fecha en
específico, cual es el periodo fiscal especifico de nuestra empresa, tener un
atributo que indique si un día es o no
el ultimo día del mes, etc. Como podemos
ver, estas no son cosas simples de determinar a simple vista o con cálculos
sencillos y nos pueden ser muy útiles para hacer cálculos requeridos por el
Cliente.
Dado
que ya determinamos que la dimensión Time es imprescindible y que ella debe ser
una tabla física dentro de nuestro DWH, nos enfrentamos a un segundo problema:
¿De dónde sacamos la data? Todas las demás dimensiones en un Data Warehouse
tienen un origen de datos, bien sea una tabla, un archivo plano, etc. Sin embargo, la dimensión Time, es una
dimensión especial, pues de esta dimensión NUNCA se tiene una fuente. Esto se debe a que los sistemas
transaccionales no necesitan por lo general tener una tabla con la data de las
fechas, pues en los sistemas OLTP no se realizan análisis de los datos, solo se
registran los mismos, y es en el DWH en donde se realizaran los análisis de los
comportamientos del negocio asociados a los periodos de tiempo.
Dada esta limitación, de no contar con una
fuente de datos para la construcción de la dimensión Time, la misma debe ser llenada haciendo uso de un
Store Procedure de BD, una hoja de Excel
con la cual podamos precargar un rango grande de fechas o algún otro programa
que desarrollemos para tal fin.
Hoy en
día, muchas herramientas de ETL te permiten crear una dimensión Time sin tener
ninguna fuente de donde sacar los valores, pero en general es más recomendable
que dicha dimensión la construyamos nosotros mismos, pues de esta manera
podemos colocarle las particularidades necesarias para el diseño especifico que
estemos realizando, como por ejemplo los periodos fiscales, o la cantidad de
días hábiles acumulados al mes en una fecha específica. Obviamente la complejidad o simplicidad de
nuestra dimensión Time dependerá en gran medida de la granularidad que vaya a
tener dicha dimensión y de los requerimientos de nuestro Cliente.
En la
siguiente entrada de este post hablaremos un poco sobre cuáles son las
recomendaciones a seguir cuando vamos a crear nuestra dimensión Time.
No hay comentarios:
Publicar un comentario