En esta entrada del Blog vamos a ver los elementos que hemos definido en el metadata de Microstrategy, que serán la representación de nuestro modelo lógico dentro del sistema de BI. Ademas, serán los elementos que nos van a permitir construir el resto de componentes que formaran nuestro sistema de análisis. Vamos a hacer un poco de recopilación de todo lo visto hasta ahora referente a nuestro modelo dimensional:
Modelo Lógico del Proyecto ENOBI
El modelo lógico del del proyecto, para que lo tengamos en mente ante toda la definición de elementos en Microstrategy, era el siguiente:
Modelo Físico del Proyecto ENOBI
El esquema físico definitivo del proyecto, con todos los ajustes realizados durante la fase de análisis y la creación de los procesos ETL era el siguiente:
Diseño Fisico Final en MySql
Como ya indicamos, hemos utilizado MySql como motor de base de datos, en la versión 5.1 Community. Os dejo el link al fichero con las sentencias SQL de creación del Datawarehouse, así como al fichero de modelado (utilizando la herramienta de MySql Workbench).
Diseño de hechos, atributos y jerarquía de dimensiones en Microstrategy 9.
Conforme vimos en la correspondiente entrada del blog (14.2. Diseño de hechos, atributos y jerarquia de dimensiones en Microstrategy 9.), en esta fase de la configuración de nuestro BI seleccionabamos las tablas de la base de datos que iban a contener los elementos, y los formalizabamos, en forma de hechos (valores con los que construiremos los indicadores de negocio) y atributos (valores con los que construiremos las dimensiones de análisis y sus jerarquias). En nuestro proyecto, los elementos definidos son los siguientes:
Tablas
De todas las tablas existentes en la base de datos, seleccionamos las que van a contener nuestros hechos e indicadores (son las tablas que vemos en la imagen anterior).
- Hechos: DWH_VENTAS Tabla de Hechos de Venta.
- Dimensiones: DWD_TIEMPO Dimensión tiempo, DWD_PRODUCTO Dimensión Producto, DWD_PROMOCION Dimensión Promociones, DWD_LOGISTICA Dimensión Centros Logísticos, DWD_CLIENTE y DWD_CLUB_VINOS para la Dimensión Cliente (y los datos para análisis del Club de Vinos).
Atributos
La configuración de atributos que formara el módelo dimensional es la siguiente:
Atributos definidos en el proyecto EnoBI
En la imagen, obtenida, de la herramienta Architect, podeís observar la correlación que hay entre cada tabla de la base de datos, los atributos definidos en cada una de ellas, y los campos de la tabla a los que corresponden. De forma que, para cada atributo, indicamos los campos de la base de datos que le dan valor. Por ejemplo, en la dimensión tiempo tenemos creados los siguientes atributos:
- Año: año de la fecha. Corresponde al campo ano_id de la tabla dwd_tiempo.
- Dia de la semana: corresponde al campo diasem_id para el código numérico y diasem_desc para el campo descripcion (Lunes, Martes, etc), ambos de la tabla dwd_tiempo.
- Dia del año: corresponde al campo diaano_id de la tabla dwd_tiempo.
- Fecha: corresponde al campo fecha_id para el valor de la fecha y fecha_desc para el campo descripción (fecha en formato letra, p.e.: 12 de Enero de 2003).
- Ind Festivo: flag que indica si una fecha es festivo o no. Corresponde al campo fest_ind_id de la tabla dwd_tiempo.
- Ind Finde: flag que indica si una fecha es fin de semana o no. Corresponde al campo find_ind_id de la tabla dwd_tiempo.
- Mes: corresponde al campo mes_id par el código numérico y mes_desc para el campo descripción (Enero, Febrero, Marzo, etc).
- Mes Año: corresponde al campo mesano_id de la tabla dwd_tiempo. Indica el año en la notación AAAA-MM, donde AAAA es el año y MM el mes.
- Semana: corresponde al campo sem_id de la tabla dwd_tiempo. Indica el numero de semana en el año.
- Semana Año: corresponde al campo semano_id de la tabla dwd_tiempo. Indica el numero de semana en la notación AAAA-SS, donde AAAA es el año y SS y la semana.
- Semestre: corresponde al campo smt_id de la tabla dwd_tiempo. Indica el semestre del año, en la notación XS (1S Primer Semestre, 2S Segundo Semestre, etc).
- Semestre Año: corresponde al campo smtano_id de la tabla dwd_tiempo. Indica el semesre en la notación AAAA-SS, donde AAAA es el año y SS el semestre.
- Trimestre: corresponde al campo trim_id de la tabla dwd_tiempo. Indica el trimestre del año, en la notación XT (1T Primer Trimestre, 2T Segundo Trimestre, etc).
- Trimestre Año: corresponde al campo trimano_id de la tabla dwd_tiempo. Indica el trimestre en la notación AAAA-TT, donde AAAA es el año y TT el trimestre.
Para el resto de dimensiones, la correspondencia sería igual, conforme a la definido en la imagen anterior. Podeis observar como hay atributos que se asocian a dos campos (ID y DESC) y otros solo a uno (ID). Esto es debido a que hay atributos que se asocian con un identificador (por ejemplo,el código de cliente o el de un producto) y ese identificador lleva relacionada una descripción (como el nombre de un cliente o la descripción de una familia de producto), que es la que califica realmente al atributo. En cambio, otros atributos se califican directamente con el valor del atributo (por ejemplo, el año), y con ese campo unico ID también tenemos la descripción (DESC). Para otros atributos, como la provincia, región, tipo promoción, también hemos omitido los códigos numéricos y en el campo ID hemos metido las descripciones (esto es cuestión de diseño y seguramente tambíen podriamos haber utilizando una codificación estandar de las que hay definidas, y por tanto, la correspondiente tupla ID DESC).
Igualmente, observar en la dimensión cliente, el atributo compuesto CPostal_Poblacion. Este atributo se forma por la concatenación de dos campos de la tabla dwd_cliente, que son cpostal_id y población_id (cosa que permite Microstrategy ). Esto nos permite definir valores a partir de operaciones con campos de la base de datos.
Hechos
Diseño Hechos
De la misma manera, definimos que hechos vamos a tener en nuestro sistema y a partir de que columnas de la base de datos se van a calcular.
En nuestro caso, nos hemos limitado a crear hechos simples, vinculandolos a un unico campo de la base de datos. Los valores con calculos los definiremos cuando construyamos los indicadores de negocio (que son los valores de análisis que luego incluiremos en nuestros informes y análisis).
Los hechos definidos son los siguientes:
Coste Total: corresponde al campo coste_total de la tabla dwh_ventas. Es el importe total del coste de la mercancia.
Coste Unit: corresponde al campo coste_unit de la tabla dwh_ventas. Es el coste unitario de cada unidad vendida.
Dtos Comerc: corresponde al campo importe_dtos de la tabla dwh_ventas. Es el importe total de los descuentos comerciales aplicados en los pedidos.
Dtos Promos: corresponde al campo importe_promos de la tabla dwh_ventas. Es el importe total de los descuentos promocionales aplicados en los pedidos.
Importe Bruto: corresponde al campo importe_bruto de la tabla dwh_ventas. Es el importe bruto de las ventas de una posición de pedido (sin aplicar ni descuentos comerciales ni descuentos promocionales).
Importe Neto: corresponde al campo importe_neto de la tabla dwh_ventas. Es el importe neto de las ventas de una posición de pedido (después de aplicar todos los descuentos).
Litros: corresponde al campo litros de la tabla dwh_ventas. Es el total de litros vendidos en una posición de pedido.
Margen Total: corresponde al campo margen_total de la tabla dwh_ventas. Es el margen total de una posición de pedido ( ingresos totales – coste total).
Margen Unit: corresponde al campo margen_unit de la tabla dwh_ventas. Es el margen unitario de una posición de pedido.
Unidades: corresponde al campo unidades de la tabla dwh_ventas. Son las unidades de producto vendidas en una posición de pedido.
Observad que hay columnas en la tabla que podiamos haber calculado a partir de los valores de otras columnas (como el importe neto a partir del importe bruto menos los descuentos, el coste unitario y el margen unitario a partir de los costes totales y margen total dividido por el número de unidades, etc.). Hemos decidido en nuestro caso tener ya los calculos guardados en la base de datos para facilitar el análisis en determinados casos y a partir de ellos realizaremos muchos mas cálculos (como veremos cuando definamos los indicadores de nuestro proyecto). Es una elección de diseño esta consideración, aunque se podría haber elegido la de reducir al máximo el número de campos y luego realizar los calculos al ejecutar los corresondientes informes.
Igualmente, podiamos haber creados hechos compuestos, definidos con operaciones aritméticas o funciones sobre una o mas columnas de la tabla.
Jerarquia de atributos.
Las jerarquías, como ya vimos, determinan como se estructuran los diferentes atributos que forman las dimensiones. Tenemos dos jerarquías, la de Sistema, que se crea cuando construimos el módelo dimensional a partir de la información de relaciones padre-hijo entre los atributos y la de usuario, que determina la forma en que podremos realizar la navegación por los atributos cuando estemos ejecutando los informes. Veamos como hemos definido ambas en nuestro proyecto.
Jerarquia de Sistema.
Las jerarquias de Sistema quedarían definidas tal y como observamos en la presentación siguiente:
Jerarquias de Usuario.
En lo referente a las jerarquias de usuario, hemos definido las siguientes (iremos detallando para cada una de las dimensiones). Veremos que las jerarquias de usuario nos permiten saltarnos atributos en la jerarquia de una dimensión para personalizar la navegación según nuestras necesidades.
- Dimensión cliente:
- Agrupador_Cliente: Agrupador Cliente –> Cliente (con punto de entrada en Agrupador Cliente)
- Canal_Cliente: Canal Cliente –> Cliente (con punto de entrada en Canal Cliente).
- Comercial_Cliente: Representante Comercial –> Cliente (con punto de entrada en Representante).
- Nielsen_Cliente: Código Nielsen –> Cliente (con punto de entrada en Código Nielsen).
- Pais_Cliente: Pais –> Region–> Provincia –> Población –> Cliente (con punto de entrada en Pais).
Jerarquia Pais --> Region --> Provincia --> Población --> Cliente
-
- Pais_Poblacion: Pais –> Region–> Provincia –> Población –>Codigo Postal (con punto de entrada en Pais).
- TipoCl_Cliente: Tipo de Cliente –> Cliente (con punto de entrada en Tipo de Cliente).
- Dimensión producto:
- Denominac_Material: Denominación de Origen –> Material.
- Familia_Material: Familia –> Material.
- Formato_Material: Formato de Venta –> Material.
- LinProd_Material: Linea de Producto –> Material.
- Litros_Material: Litros –> Material.
- Target_Material: Target de Destino del Producto –> Material.
- Unidad_Material: Unidad de Medida –> Material.
- Varietal_Material: Variedades de Uva –> Material.
- Dimensión tiempo:
- Año_Mes_Dia: Año –> Mes –> Dia.
- Año_Smt_Mes_Dia: Año –> Semestre del Año –> Mes Año –> Dia.
- Año_Smt_Trim_Mes_Dia: Año –> Semestre del Año –> Trimestre del Año –> Mes Año –> Dia.
- Año_Trim_Mes_Dia: Año –> Trimestre del Año –> Mes Año –> Dia.
Jerarquia Año --> Semestre --> Trimestre --> Mes --> Dia
- DiaSemana_Fecha: Dia de la Semana –> Dia (Fecha).
- Festivo_Dia: Indicador de Festivo –> Dia.
- Finde_Dia: Indicador de Fin de Semana –> Dia.
- Semana_Dia: Semana –> Dia.
- SemanaAño_Dia: Semana del Año –> Dia.
- Dimensión promoción:
- FecIni_Promocion: Fecha de Inicio de la Promoción –> Código de Promoción.
- FecFin_Promocion: Fecha de Fin de la Promoción –> Código de Promoción.
- TipoAccion_Promocion: Tipo de Acción Comercial –> Código de Promoción.
- TipoDto_Promocion: Tipo de Descuento –> Código de Promoción.
- TipoPromo_Promoción: Tipo de Promoción –> Código de Promoción.
- TIpoPublic_Promocion: Tipo de Publicidad –> Código de Promoción.
- Dimensión logística:
- Capacidad_Centro: Capacidad del Centro –> Centro Logístico.
- Pais_Centro: Pais –> Region –> Provincia –> Población –> Centro Logístico.
- Tecnologia_Centro: Tecnologia de Almacenaje –> Centro Logístico.
Igualmente, hemos creado Jerarquias filtradas. Estas jerarquias tienen aplicado un filtro que restringe los valores devueltos. Por ejemplo, dentro de la dimensión cliente, hemos creado una jerarquía con punto de entrada en Pais, que pasa por Region, Provincia, Población y Cliente. En el atributo de entrada (Pais), hemos indicado un filtro con un valor estático que restrige las entradas a solo aquellas del pais España. De esta forma, cuando utilizemos esta jerarquía en los informes o en la navegación, los valores ya van a estar restringidos por ese criterio (cuando un atributo de una jerarquia esta filtrado aparece el simbolo de los 3 circulos de colores en su icono).
Ejemplo de jerarquia Filtrada
En el Explorador de datos de la herramienta Desktop (que nos permite navegar por los atributos utilizando las jerarquias de sistema y las jerarquias de usuario), para esta jerarquía visualizariamos los siguientes valores:
Valores visualizados en jerarquia filtrada
Hemos creado otras jerarquias filtradas, como son:
- Linea Producto–> Material, eliminando los valores de linea de producto correspondientes a la gama alta (ciertos códigos de linea de producto).
- Tipo de Cliente –> Cliente, eliminando determinados tipos de cliente que no queremos considerar en nuestro análisis (ciertos códigos de tipo de cliente).
- Zona Levante –> Cliente, seleccionando el pais España y solo determinadas regiones (Cataluña y Comunidad Valenciana).
- …..
Vemos que tenemos infinitas posibilidades de dejar predefinidas jerarquias que podremos utilizar en cada tipo de análisis concreto que realizemos. Otro aspecto interesante de las jerarquias es que podremos definir uno o varios puntos de entrada (lugar desde el que se puede iniciar la navegación). El punto de entrada puede estar en cualquier nivel dentro de la jerarquía (en el ejemplo de la imagen, el punto de entrada esta en el atribuito Pais).
Diseño de transformaciones en Microstrategy 9.
Las transformaciones son una técnica definida por Microstrategy que nos permite realizar analisis de series temporales. Por ejemplo, la tipica comparación Año Actual / Año Anterior. Las transformaciones se definen sobre un atributo (por ejemplo la fecha, el año) y luego se utilizan a la hora de construir los indicadores. En nuestro ejemplo, hemos creado 3 transformaciones para los siguientes análisis temporales: 15 Dias Atras, Año Anterior, Mes Anterior y Misma Fecha Mes Anterior.
Transformación Año Anterior
Como podeis ver en el ejemplo, la transformación Año Anterior, en nuestro caso, se aplicaria sobre el Año (restandole 1 al año de los datos), y a la Fecha, restandole 12 meses para ir a la misma fecha del año anterior. Las transformaciones se pueden facilitar guardando en base de datos campos ya calculados en la dimensión tiempo que nos indiquen el periodo temporal de comparación (nos podiamos haber guardado el año anterior, el mes anterior, fecha de comparación del año anterior, etc), aunque tambien podemos calcular los valores, como en nuestro caso.
El uso de transformaciones esta limitado a los atributos por los que estemos analizando la información, pero para determinados informes nos proporciona una gran potencia de análisis.
Diseño de indicadores, Filtros y Selecciones Dinámicas.
Según vimos en la correspondiente entrada del blog (14.3. Diseño de Indicadores, Filtros y Selecciones Dinámicas en Microstrategy 9.), los indicadores, filtros y selecciones dinámicas son el resto de elementos que nos permitiran empezar a trabajar con nuestro sistema de Inteligencia de Negocio. Los elemenos que hemos definido en nuestro proyecto son los siguientes:
Diseño de indicadores.
Los indicadores de análisis que hemos construido en nuestro sistema para poder utilizar dentro de los informes y documentos son los siguientes:
- Coste_Total: coste total de las ventas. Se calcula con la funcion Sum sobre el hecho Coste_Total.
- Coste_Total%: porcentaje de coste de las ventas. Se calcula con la formula Coste_total * 100 / Importe_Neto, utilizando los indicadores correspondientes.
- Coste_Unit: es el coste unitario de las ventas. Se calcula con la formula Coste_Total / Unidades, utilizando los indicadores correspondientes.
- Dto_Comerc: importe de los descuentos comerciales aplicados en las ventas. Se calcula con la funcion Sum sobre el hecho Dtos_Comerc.
- Dto_Comerc%: porcentaje de descuento comercial aplicado. Se calcula con la formula Dto_Comerc * 100 / Importe Bruto, utilizando los indicadores correspondientes.
- Dto_Promos: importe de los descuentos promocionales aplicados en las ventas. Se calcula con la funcion Sum sobre el hecho Dtos_Promos.
- Dto_Promos%: porcentaje de descuento promocional aplicado. Se calcula con la formula Dto_Promos * 100 / Importe Bruto, utilizando los indicadores correspondientes.
- Dto_Total: suma total de descuentos aplicados (tanto comerciales como promocionales). Se calcula como la suma de los indicadores Dto_Comerc y Dto_Promos.
- Dto_Total%: porcentaje total de descuento aplicado. Formula ((Dto_Total * 100) / Importe Bruto), utilizando los correspondientes indicadores.
- Dto_Total_Unit: porcentaje de descuento total aplicado. Se calcula con la formula ([Dto_Total] / Unidades) sobre los correspondientes indicadores.
- Importe_Bruto: importe bruto de la venta. Se calcula con la funcion Sum sobre el hecho Importe_Bruto.
- Importe_Neto: importe neto de la venta. Se calcula con la funcion Sum sobre el hecho Importe_Neto.
- Litros: numero de litros vendidos. Se calcula con la funcion Sum sobre el hecho Litros.
- Margen_Total: margen total en la venta. Se calcula con la funcion Sum sobre el hecho Margen_Total.
- Margen_Total%: porcentaje de margen total sobre el importe de venta. Se calcula con los indicadores, utilizando la formula: (([Margen_Total] * 100) / [Importe Neto]).
- Margen_Unit: margen de cada unidad vendida. Se calcula con los indicadores, con la formula ([Margen_Total] / Unidades).
- Precio_Bruto: precio bruto de venta de cada unidad. Se calcula con los indicadores, con la formula ([Importe Bruto] / Unidades).
- Precio_Neto: precio neto de venta de cada unidad (despues de descuentos). Se calcula con los indicadores, con la formula ([Importe Neto] / Unidades).
- Unidades: numero de unidades vendidas. Se calcula con la funcion Sum sobre el hecho Unidades.
Editor Indicadores - Definicion del indicador Margen_Total%
Ademas, hemos creado los siguientes indicadores de recuento:
- Recuento Clientes: indicador que nos devuelve el numero de clientes de un análisis. Se calcula con la función Count sobre el atributo Cliente.
- Recuento Materiales: indicador que nos devuelve el numero de materiales de un análisis. Se calcula con la función Count sobre el atributo Material.
- Recuento Pedidos: indicador que nos devuelve el numero de pedidos de un analisis. Se calculo con la función Count sobre el atributo Pedido.
Y utilizando la transformación Año Anterior, los siguiente indicadores para utilizar en las series temporales:
- Importe Bruto AANT: similar al indicador Importe Bruto, pero aplicandole la transformación Año Anterior.
- Importe Neto AANT: similar al indicador Importe Neto, pero aplicandole la transformación Año Anterior.
- Margen Total AANT: similar al indicador Margen Total, pero aplicandole la transformación Año Anterior.
Este es un set de indicadores sencillos. Microstrategy nos permite, partiendo de los hechos definidos, los indicadores descritos aquí y multiples operadores y funciones realizar la definición de indicadores mucho mas complejos que nos permitirán cubrir los requerimientos de información (tales como valores máximos y mínimos, contadores, funciones estadísticas sobre un conjunto de valores como media, varianza, desviación estandar, etc, etc).
Diseño de Filtros.
Son los últimos elementos que nos faltan por definir, y son los que nos van a permitir establecer restricciones en los diferentes objetos de nuestro sistema, como son a nivel de jerarquías (jerarquias filtradas), indicadores o a la hora de ejecutar los informes y analisis (criterios de selección, selección de objetos a incluir en un informe, etc).
Algunos de los filtros estáticos (con valores fijos) creados en nuestro sistema son los siguientes:
- Año_2007, Año_2008: filtro sobre los valores del atributo Año, indicando un valor en concreto (2007, 2008, …).
- Pais_España: filtro sobre los valores del atributo Pais, seleccionando el valor España.
- LineaProducto_SinGamaAlta: filtro sobre los valores del atributo Linea Producto excluyendo determinados valores.
- TipoCl_SinVentaDirecta: filtro sobre los valores del atributo Tipo Cliente, excluyendo los clientes de venta directa.
- ES_TipoCL_No_VentaDirecta: filtro sobre el atributo pais con el valor España y a la vez sobre el atributo Tipo Cliente, excluyendo los de venta directa.
- ZONA_CENTRO, ZONA_ISLAS, ZONA_NORTE, ZONA_LEVANTE, ZONA_SUR: filtros sobre el atributo Región, seleccionando una lista de valores (las regiones que incluyen cada zona, tal y como vemos en la imagen posterior).
- …..
Filtro Estático ZONA_ISLAS
Algunos de los filtros dinámicos definidos (valores que se seleccionan o indican en tiempo de ejecución):
- Año: filtro dinamico sobre los valores del atributo Año, nos permite seleccionar entre la lista de años definidos en la dimensión tiempo.
- Periodo: filtro dinámico que nos permite definir un rango de fechas (fecha desde / fecha hasta), sobre el atributo fecha de la dimensión tiempo.
- Dim_Cliente: filtro dinámico que nos permite elegir sobre que atributo de la dimensión cliente definir el filtrado, y a continuación, para ese atributo, indicar los valores de restricción (pudiendo seleccionar de la lista de valores de dicho atributo).
- Dim_Tiempo: idem del anterior sobre todos los atributos de la dimensión tiempo.
- ……
Selecciones Dinámicas
Las selecciones dinámicas van intimamente ligadas a los filtros dinámicos (de hecho, utilizan características de estas). Ademas, se pueden definir selecciones dinámicas para otros cometidos, como son:
- Selección_Atributo_Tiempo: nos permite vincularla a un informe, de forma que al ejecutarlo podremos seleccionar que atributos queremos visualizar (y por los que queremos desglosar la información) en el informe, todo ello en tiempo de ejecución. El usuario se podrá construir su filas y columnas de forma dinámica.
- Selección_Indicadores_Informe: nos permite vincularla a un informe, de forma que al ejecutarlo podremos seleccionar de una lista los indicadores que queremos incluir en este (que serán los que se calculen y aparezcan en el informe), igualmente en tiempo de ejecución.
- Seleccion_Filtro_Zona: nos permite seleccionar de una lista de filtros predefinidos. Asociado a un informe, cuando lo ejecutemos nos aparecera la lista de filtros y el que seleccionemos se aplicara para la construcción de los datos (por ejemplo, para seleccionar la zona geográfica para la que queremos realizar el análisis). En el ejemplo, se seleccionan filtros estáticos que ya tienen los valores de las regiones a considerar, aunque también podrian ser filtros dinámicos que pedirian la lista de valores a considerar.
- Selección_Todas_Jerarquias: aplicada a un informe, nos permite seleccionar, de todas las jerarquias definidas en el sistema, los atributos correspondientes, y para cada uno de estos atributos, las correspondientes restricciones de filtrado de información (pudiendo seleccionar uno o varios atributos con los correspondientes valores para cada uno de ellos).
- ….
Editor Selecciones Dinamicas - Lista de Indicadores a elegir
Igualmente, podríamos haber definido todo tipo de selecciones dinámicas para filtrar el valor de un indicador o de un atributo, y luego utilizarlas indistintamente en la definición de filtros simples o compuestos, o bien directamente en los informes (una selección dinámica también se puede considerar en este caso un filtro).
Conclusiones
Con la explicación y enumeración de los elementos definidos en nuestro proyecto concluimos la fase de modelado y diseño. A partir de ahora, intentaremos explotar nuestro DW con las diferentes herramientas de las que dispone Microstrategy 9. Empezaremos con el diseño de informes y las amplias posibilidades que este ofrece.
Hemos pasado de la definición teórica de los elementos del sistema Microstrategy a la fase práctica de ver como los hemos utilizado y definido nosotros para nuestro proyecto, viendo de una manera sencilla (se puede profundizar muchisimo mas) las posibilidades y propiedades que nos ofrece cada uno, y la cantidad de cosas que podemos construir con ellos para las siguientes fases del proyecto.