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.
Hola rut, es bueno saber de ti...
ResponderEliminarcomo puedo contactarte???
Hola Blanco79, tenias alguna duda? como te puedo ayudar? Avisame, saludos
Eliminar