Tips de Diseño de DWH- La Granularidad – Parte 1

06 Abr, 2016

 

 

Por nuestra Blogger SmartB: Rut Almoguera

Querido lector que te inicias en el diseño de DWHs, si crees que la granularidad es un término elegante para referirse a la cantidad de granos de arena que hay en una hermosa playa del Caribe… Entonces este post es para ti.
Cuando escuchamos la palabra granularidad normalmente lo asociamos a granos de arena, sin embargo en el caso del diseño de un DWH, este concepto se refiere a dos cosas.  Una es al nivel de detalle de la data que guardamos en una tabla de una dimensión, y otra al nivel de detalle que con el que registramos los hechos en una tabla Fact.
En este post hablaremos de la granularidad en las dimensiones.
La granularidad como instintivamente pensamos está asociada al grano, pero al grano de las dimensiones de un DWH. El grano de las dimensiones es el nivel de detalle a la que llegamos en la data que guardamos en la dimensión. Para entender mejor este concepto, usemos de ejemplo la dimensión Región.
Imaginemos por un momento que tenemos un DWH en donde registramos las ventas de unos almacenes que tienen presencia a nivel mundial.  En este DWH se requiere que se registren las regiones en donde se realizaron las ventas para poder analizar cómo fueron las ventas en cada una de ellas y tal vez analizar donde aplicar campañas estratégicas con ofertas por Región.
 
 
Supongamos que nuestra región de venta se registra en el transaccional a nivel de Municipio, es decir cada tienda que realiza una venta deja registrado en el sistema el Municipio de la misma.  En este caso en el sistema transaccional conocemos el detalle de las ventas con el Continente, el País, el Estado, la Ciudad y el Municipio, con lo cual tendríamos una jerarquía que llega hasta el detalle del Municipio:
 
Con esta jerarquía en la dimensión Región, tendríamos que la granularidad de dicha dimensión es hasta el nivel de Municipio.
Con gran frecuencia la granularidad de las dimensiones en el DWH es la que encontramos en el sistema transaccional, pero a veces ese nivel de detalle es excesivo para el DWH, y entonces debemos decidir cambiarlo por algo más resumido, para que sea útil para los análisis que se desean realizar.  Imaginemos por ejemplo que el detalle que deseamos conocer en el DWH es solo hasta el nivel de la Región.  En este caso la jerarquía que estaríamos usando dentro de nuestro DWH para la dimensión Región sería diferente al nivel de detalle que tenemos en el transaccional.  En este caso la jerarquía para dicha dimensión sería la siguiente:
 
Con esto la dimensión Región llegaría solo hasta la granularidad de Región y no del Municipio.
Mientras más detalle tiene una dimensión en el DWH más fino es el grano y diríamos que tiene una granularidad más fina, y mientras menos detalle, el grano es más grueso, y por lo tanto la granularidad es más gruesa.
Con frecuencia se recomienda que el grano de las dimensiones en el DWH sea el mismo que tenemos en el transaccional, pero sucede que en ocasiones demasiado detalle implica tablas Facts más grandes, y con eso puede causar que se degrade el tiempo de respuesta del DWH.  Además de esto, los DWHs guardan data histórica de varios años, lo que puede causar que el nivel de detalle se convierta en un problema para el mantenimiento de los mismos, pues tendríamos que decidir entre tener más detalle del transaccional en cada hecho guardado en la tabla Fact vs tener menos años de historia en el DWH.
Por esto al momento de diseñar las dimensiones y decidir el grano de las mismas debemos sopesar que es más importante para nuestro análisis: si el hecho de tener mayor detalle por hecho en la Fact y que se degrade el performance de respuesta del DWH con un nivel de detalle que a lo mejor no es requerido en los análisis de la empresa y que puede estar afectando el tamaño de la BD del DWH, o tener menor detalle que causaría que tuviésemos menos historia dentro del DWH.  Por esto es necesario que antes de diseñar estudiemos detenidamente los requerimientos de los usuarios, y veamos los Reportes y Dashboards que se desean que el DWH ayude a realizar, pues el DWH no está hecho para sustituir los reportes ya existentes en el sistema transaccional sino para complementarlo y responder a las preguntas de alto nivel que se hacen los directivos de la empresa con respecto al desempeño de la misma.
Así que querido lector, la próxima vez que estés diseñando un DWH es importante no solo decidir las dimensiones que participaran del mismo, sino también hay que prestar atención a la granularidad de las mismas, pues esto contribuirá con el éxito de nuestro diseño, adaptándose mejor a los análisis que se harán de los datos y también al mantenimiento de la BD que lo contiene.
En un próximo post hablaremos sobre la granularidad de las tablas Fact.