Qué Es Un Modelo Dimensional
Qué Es Un Modelo Dimensional
Qué Es Un Modelo Dimensional
Viendo la figura anterior comprendemos porque en los inicios este modelo tambin se
le conoci como Modelo de Estrella.
La tabla de hechos contiene incluso varias llaves forneas, cada una de ellas hacia
una dimensin, es por eso que contiene una llave primaria compuesta, es decir, que
se compone de varias columnas. Adems las tablas de hecho tpicamente incluyen
otras columnas numricas llamadas "mtricas" o "hechos", por ejemplo en la figura
anterior las mtricas son "Ventas en Pesos" y "Ventas en Cantidad".
La informacin contenida en una tabla de hechos por si sola no nos dice nada, la
mayora de las veces contiene nicamente nmeros.
Por otro lado las dimensiones comnmente contienen informacin descriptiva. Los
atributos de las dimensiones muchas veces sern los encabezados de las columnas
en los reportes.
Lo bonito del modelo dimensional es que fcilmente los usuarios pueden intuir el
contenido de la informacin y sobre todo permite a las aplicaciones de inteligencia de
negocios extraer la informacin increblemente rpido.
El modelo estrella
Hay 2 modelos para crear un Data Warehouse, el modelo estrella o el copo de nieve. Yo prefiero el
modelo estrella, ya que el tiempo de respuesta que provee es ms rpido y hace que el servidor
trabaje menos.
El concepto de Estrella es bastante sencillo. Hay que disear las tablas usando una tabla central para
los hechos, tablas para los catlogos y una tabla de tiempo.
El meollo del diseo de las tablas en el modelo estrella est en los catlogos. Tiene que poner en
una sola tabla todo aquello que se pueda deducir del elemento ms granular de la tabla y que est
ms abajo en la jerarqua.
Por ejemplo, si usted tiene un catlogo de productos, el elemento ms granular es el producto qu
se puede deducir del producto? Pues la marca, el empaque, la presentacin (botella de cristal, PET
no retornable, aluminio, etc.), la familia (bebidas), la subfamilia, la categora, la subcategora, el
color, la talla si aplica, etc.
Bueno pues todo esto se coloca en la misma tabla.
El campo llave de esa tabla es el product_id (la llave de producto) porque producto (product) es el
elemento ms abajo en la jerarqua o ms granular. Valo de esta forma: una marca tiene productos,
la familia agrupa productos, la subfamilia igual, la categora igual, el color igual. El producto es el
nico que no agrupa a nadie, entonces esa es la llave.
Si usted le hiciera un select a ese catlogo de productos el resultado sera el siguiente.
Si hace esto en el query SQL que escriba para obtener datos de la estrella podr usar:
where
IdBrand = 15
en vz de:
where
Brand = Washington
Tendr un mejor tiempo de respuesta si usa llaves. Entonces siempre en los catlogos ponga
adems de los descriptores el campo llave de cada descriptor.
TIP: Si est pensando crear un cubo con los Analysis Services de Microsoft usando esta estrella, el
poner la llave en la estrella hace que el cubo se reduzca de tamao y el tiempo de respuesta se
acelere. Solo tenga cuidado de que al crear la dimensin, en propiedades de la dimensin ubique y
use la propiedad llave de la dimensin.
TIP: Para las llaves trate de que siempre sean numricas y de no usar llaves compuestas.
TIP: Si va a seguir el tip anterior, puede ayudarse poniendo en los catlogos adems de la nueva
llave inventada por usted, la llave original para la dimensin. Yo siempre las identifico con Id y Cve,
la que termina en ID es inventada por m y la que termina o comienza en CVE es la original.
A partir del producto yo puedo deducir en que tienda se vendi? Suponiendo que hablamos de
supermercados y en cada tienda se pueden vender los mismos productos entonces la respuesta es
NO, no se puede deducir qu tienda vendi qu producto. Esto se resuelve en la tabla de hechos
poniendo ah que producto se vendi (producto_id), en que tienda (store_id) y en que da (time_id).
Para complentar esto puede consultar los posts La tabla de hechos y Algunas recomendaciones para
la tabla de hechos. Respecto a la tabla de tiempo (TimeDim) puede leer La dimensin tiempo y los
otros campos de la tabla de tiempo.
Cuando estamos construyendo nuestro Data Warehouse tenemos que disear la tabla central que es
la que guardar los hechos. A diferencia de un sistema transaccional donde en una tabla tenemos el
total de la factura, en otra el total de la orden de compra, en otro el tipo de cambio (y as
sucesivamente) en un Data Warehouse (DWH) los hechos (las cosas que sucedieron) estn en una
nica tabla.
Para aclarar la palabra hechos: qu sucedi en mi compaia? Pues vend, compr, vend en
unidades, tuve un # de empleados. Entonces en la tabla de hechos se guardan las ventas, las ventas
en unidades, las compras, etc..
Todo lo que sean indicadores.
Tampoco se trata de hacer una tabla gigantesca que tenga lo de recursos humanos + lo de ventas +
lo de produccion + lo de telemarketing + todo!
No hay que exagerar
Normalmente las cosas que estn en la tabla de hechos tienen afinidad entre s. De esta forma
tendremos una tabla de Hechos de Ventas, una de inventario, una de Recursos Humanos, una de
produccion, etc.
No todas las herramientas de explotacin de Data Warehouse permiten hacer reportes o informes
tomando informacin de 2 o ms tablas de hechos; es por esto que a veces en un DWH se suelen
encontrar cosas extraas como las ventas y el # de empleados en la misma tabla de hechos ( para
hacer el calculo de Ventas/#Personas). El problema de esto es que el DWH vuelve catico: cada vez
que necesite hacer un calculo entre 2 tablas de hechos hago un nueva table de hechos que junte las
2 y entonces me lleno de tablas de hechos o cubos ( si trabaja con cubos Rolap a esto se le
llama cubitis).
Mejor encuentre una herramienta que permita tomar informacin de multiples tablas de
hechos. Artus soporta crear indicadores calculados con columnas de 2 o ms tablas de hechos. No
solo eso, si no que tambin permite mezclar en el tablero de control informacin de diferentes
proveedores de cubos: SAP, Analysis Services, Rolap ( Oracle, Sybase, DB2, Redbrick ).