UTILIZACIÓN DE INFORMACIÓN HISTÓRICA PARA DECISIONES EMPRESARIALES Autores: Juan David Peña Rivera Jesús Armando Suárez Daza Proyecto de grado presentado para optar el título de Ingeniero de Sistemas Director: Luis Roberto Ojeda PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS SANTAFÉ DE BOGOTA D.C. Junio de 2005 PONTIFICIA UNIVERSIDAD JAVERIANA FACULTAD DE INGENIERIA CARRERA DE INGENIERIA DE SISTEMAS Rector Magnífico: Padre Gerardo Remolina Vargas S.J. Decano Académico Facultad de Ingeniería: Ingeniero Francisco Rebolledo Decano del Medio Universitario Facultad de Ingeniería: Padre José Sarmiento Nova S.J. Director Carrera de Ingeniería de Sistemas: Ingeniera Hilda Cristina Chaparro López Director Departamento de Ingeniería de Sistemas: Ingeniero Germán Alberto Chavarro Nota de Aceptación ______________________________________________________ ______________________________________________________ ______________________________________________________ ________________________________________ Director del Proyecto ________________________________________ Jurado ________________________________________ Jurado Junio, 2005 Artículo 23 de la Resolución No. 1 de Junio de 1946 “La Universidad no se hace responsable de los conceptos emitidos por sus alumnos en sus proyectos de grado. Sólo velará porque no se publique nada contrario al dogma y la moral católica y porque no contengan ataques o polémicas puramente personales. Antes bien, que se vean en ellos el anhelo de buscar la verdad y la Justicia” TABLA DE CONTENIDO INTRODUCCIÓN ........................................................................................................1 I MARCO TEÓRICO....................................................................................................3 1. DATA WAREHOUSE .........................................................................................................................3 1.1 COMPONENTES DE UN DATA WAREHOUSE ......................................................................4 1.2 BODEGA DE DATOS Y DATAMARTS....................................................................................4 1.2.1 Características de la bodega de datos.........................................................5 1.3 PROCESOS DE EXTRACCIÓN, TRANSFORMACIÓN Y CARGA DE LOS DATOS ...........6 1.4 EXPLOTACIÓN...........................................................................................................................6 1.4.1 Análisis OLAP..........................................................................................7 II. HERRAMIENTAS DE DATA WAREHOUSE ......................................................11 2. HERRAMIENTAS DE BASES DE DATOS Y OLAP .......................................................................11 2.1 MOTOR DE BASES DE DATOS MYSQL ...............................................................................11 2.2 MOTOR DE BASES DE DATOS POSTGRESQL....................................................................12 2.2.1 Arquitectura de la herramienta ................................................................12 2.3 HERRAMIENTA DE OLAP JPIVOT – MONDRIAN..............................................................13 2.3.1 Arquitectura de la herramienta ................................................................13 2.3.2 Estrategias de almacenamiento y agregación...........................................14 2.3.3 API .........................................................................................................15 2.3.4 MDX ......................................................................................................15 2.3.5 Esquema Mondrian .................................................................................16 2.3.6 Modelo lógico.........................................................................................16 III. METODOLOGIA PARA EL DESARROLLO DE UN DATA WAREHOUSE.....18 3. METODOLOGIA DE RALPH KIMBALL PARA UN PROYECTO DE DATA WAREHOUSE.....18 3.1 Planeación y administración del proyecto...................................................................................18 3.2 Análisis de requerimientos..........................................................................................................22 3.3 Modelamiento dimensional.........................................................................................................24 3.4 Diseño técnico de la arquitectura ................................................................................................28 3.5 Procesos de extracción, transformación y carga .........................................................................31 3.6 Selección e instalación de productos...........................................................................................36 3.7 CARACTERÍSTICAS DE aplicaciones para usuarios finales....................................................37 3.8 Mantenimiento y crecimiento de un data warehouse ..................................................................39 IV. DESARROLLO DEL PROCESO DE CONSTRUCCIÓN DEL DATAMART .....42 4. PLANEACIÓN Y ADMINISTRACIÓN DEL PROYECTO .............................................................42 4.1 OBJETIVO DEL PROYECTO...................................................................................................42 4.2 DEFINICIÓN DEL PROYECTO ...............................................................................................42 4.3 ALCANCE DEL PROYECTO ...................................................................................................43 4.4 JUSTIFICACIÓN DEL PROYECTO EN EL NEGOCIO..........................................................43 5. ANÁLISIS DE REQUERIMIENTOS ................................................................................................44 5.1 Levantamiento de requerimientos ...............................................................................................44 v 5.2 Documentación de requerimientos..............................................................................................44 5.2.1 Ver ventas por productos.........................................................................45 5.2.2Ver ventas por cliente ..............................................................................45 5.2.3 Ver ventas por tiempos............................................................................45 5.2.4 Ver ventas de productos por cliente.........................................................45 5.2.5 Ver ventas por productos en el tiempo.....................................................45 5.2.6 Ver ventas por cliente en el tiempo .........................................................45 5.2.7 Ver ventas por cliente y producto en el tiempo ........................................46 5.2.8 Ver ventas por ciudad .............................................................................46 5.2.9 Ver ventas por productos en ciudades......................................................46 5.2.10 Ver ventas por ciudad en el tiempo........................................................46 6. MODELAMIENTO DIMENSIONAL ...............................................................................................46 6.1 EL DATAMART ........................................................................................................................47 6.2 DEFINICIÓN DE LA GRANULARIDAD ................................................................................47 6.3 DIMENSIONES .........................................................................................................................48 6.3.1 Dimensión línea ......................................................................................48 6.3.2 Dimensión producto................................................................................48 6.3.3 Dimensión cliente ...................................................................................49 6.3.4 Dimensión sector ....................................................................................49 6.3.5 Dimensión geografía ...............................................................................49 6.3.6 Dimensión tiempo...................................................................................50 6.4 TABLA DE HECHOS ................................................................................................................50 6.5 DISEÑO DEL MODELO DIMENSIONAL...............................................................................51 7. DISEÑO TECNICO DE LA ARQUITECTURA................................................................................52 7.1 DATOS .......................................................................................................................................52 7.1.1 Mapeo de los datos en el modelo dimensional.........................................53 7.2 BACK ROOM ............................................................................................................................56 7.3 FRONT ROOM ..........................................................................................................................56 7.4 INFRAESTRUCTURA DE DATA WAREHOUSE ..................................................................57 8. PROCESO DE EXTRACCIÓN, TRANSFORMACIÓN Y CARGA.................................................58 8.1 HERRAMIENTA DE EXTRACCIÓN, TRANSFORMACIÓN Y CARGA .............................58 8.1.1 ETL de dimensión sector.........................................................................58 8.1.2 ETL de dimensión línea ..........................................................................58 8.1.3 ETL de dimensión geografía ...................................................................59 8.1.4 ETL de dimensión producto ....................................................................59 8.1.5 ETL de dimensión cliente .......................................................................59 8.1.6 ETL tabla de hechos................................................................................59 9. CONSTRUCCIÓN DEL CUBO .........................................................................................................61 9.1 ARCHVIVOS JSP ......................................................................................................................61 9.2 ESTRUCTURAS XML ..............................................................................................................62 9.2.1 Estructura del cubo .................................................................................63 9.2.2 Estructura de la dimensión Segmento......................................................64 9.2.2 Estructura de la dimensión Ciudad ..........................................................65 9.2.3 Estructura de la dimensión Producto .......................................................65 9.2.4 Estructura de la dimensión tiempo...........................................................66 10. REPORTES IMPLEMENTADOS....................................................................................................67 vi 10.1 VENTAS POR PRODUCTOS .................................................................................................68 10.2 VENTAS POR CLIENTE.........................................................................................................69 10.3 VENTAS POR TIEMPOS ........................................................................................................70 10.4 VENTAS DE PRODUCTOS POR CLIENTE..........................................................................71 10.5 VENTAS POR PRODUCTOS EN EL TIEMPO......................................................................72 10.6 VENTAS POR CLIENTE EN EL TIEMPO.............................................................................73 10.7 VENTAS POR CLIENTE Y PRODUCTO EN EL TIEMPO ..................................................74 10.8 VENTAS POR CIUDAD..........................................................................................................75 10.9 VENTAS POR PRODUCTOS EN CIUDADES ......................................................................76 10.10 VENTAS POR CIUDAD EN EL TIEMPO............................................................................77 9. MANTENIMIENTO Y CRECIMIENTO DEL DATAMART ...........................................................78 CONCLUSIONES ......................................................................................................79 RECOMENDACIONES .............................................................................................81 GLOSARIO ................................................................................................................82 BIBLIOGRAFÍA ........................................................................................................83 vii INTRODUCCIÓN Empresas de diferentes sectores buscan incrementar su productividad y ventajas competitivas proporcionándole a la gerencia información analítica y estratégica para el negocio. Esto se logra al aprovechar la información que a diario es almacenada en sus bases de datos operativas. Al intentar utilizar esta información de las bases de datos operativas para tomar decisiones, se presentan varios problemas: existe demasiada información, muy genérica de la cual no se pueden sacar conclusiones. La información muchas veces es irrelevante para el área interesada en mejorar sus decisiones, y la organización termina por desaprovechar todos estos datos, perdiendo un proceso de aprendizaje de sus propios logros e información. Por lo tanto, se plantea realizar una unión entre el mundo de los datos y el de los negocios, por medio de la inteligencia de negocios con una solución basada en data warehousing (bodega de datos). Esta solución permite utilizar los datos operativos de una empresa para producir información relevante y que soporte la toma de decisiones empresariales. Para el proyecto de data warehousing se toman como fuente los sistemas de información que tenga la empresa, pueden ser varios y en diferentes formatos, como bases de datos o archivos de texto. Luego de extraer los datos relevantes, son transformados de ser necesario y son cargados a una nueva base de datos, diseñada para soportar la inteligencia de negocios, que luego será analizada tridimensionalmente con análisis OLAP. Mediante este proceso se producirá información relevante para los ejecutivos de una empresa. Preguntas como: ¿Se va a lograr una cuota de ventas en un trimestre determinado?, ¿En cuál ciudad tiene mayor potencial determinado producto?, ¿Qué tal se está vendiendo un producto con respecto a períodos de tiempo anteriores?, ¿Cual es el producto más rentable en determinada ciudad? ¿Cuáles son mis mejores clientes? y por lo tanto, sus decisiones correspondientes se toman a diario en una empresa, basándose en muchas ocasiones en intuiciones o suposiciones. Mediante el tipo de análisis proporcionado en este proyecto, estas preguntas serán resueltas con base en hechos y cifras rescatadas de las fuentes de datos operativas de la organización. Grandes empresas como EPM, Telmex e IBM han utilizado la inteligencia de negocios para estos propósitos, permitiéndoles conocer mejor a sus clientes, sus productos, ventas, costos y otros factores determinantes en sus negocios. Las pymes han estado ajenas a estas tecnologías por el alto costo que una solución de inteligencia de negocios como lo es el Data warehouse implica. Es por esto que el proyecto plantea el desarrollo 1 de una solución de data warehouse para una pyme, utilizando herramientas de código abierto para cada etapa de un desarrollo de este tipo. Al poner a disposición de las pymes la inteligencia de negocios, se incrementará la competitividad de estas frente al mercado y les dará la misma capacidad de inteligencia y análisis que disponen sus grandes competidoras. Al abordar este documento, se expone un conocimiento teórico del proceso de data warehousing, describiendo su definición y procesos necesarios para realizarlo. Luego se da a conocer la metodología utilizada para el desarrollo del proyecto, establecida por Ralph Kimball, quien es considerado el padre y autoridad en el mundo del data warehouse. Más adelante se exponen los elementos más importantes de las herramientas libres utilizadas para la solución, para después entrar a detallar los procesos realizados en el proyecto, desde la planeación del proyecto hasta su implantación. Finalmente se exponen las conclusiones y recomendaciones que ha dejado el proyecto para dar claridad a los conceptos desarrollados y servir de base a futuros desarrollos de la misma área. 2 I MARCO TEÓRICO 1. DATA WAREHOUSE El Data Warehouse es un conjunto de procesos y acciones que involucra un almacenamiento de datos no volátil, orientado a un tema, integrado e histórico para el soporte al proceso de toma de decisiones de la gerencia. Es una técnica para consolidar y administrar datos de diversas fuentes con el propósito de responder preguntas de negocios y tomar decisiones (Ver figura 1). Está constituido por la correcta organización e interrelación de los desarrollos tecnológicos consistentes en: consolidar datos desde una variedad de fuentes; manejar grandes volúmenes de datos de una forma que no era posible, acceder a los datos de una forma más directa, en "el lenguaje del negocio", y analizarlos para obtener relaciones complejas entre los mismos. Figura 1. Necesidad de información que soporte decisiones del negocio.1 1 [4] Fundamentals of Data Warehouse and Business Intelligence for Knowledge Management. 3 Un sistema Data warehouse define un nuevo concepto para el almacenamiento de datos, integra la información generada en todos los ámbitos de una actividad de negocio (ventas, producción, finanzas, Marketing, etc.) que proviene de diferentes fuentes, formatos y tipos en un único depósito y permite un acceso y explotación de la información contenida en las bases de datos, facilitando un amplio abanico de posibilidades de análisis multivariables que permitirán la toma de decisiones estratégicas. 1.1 COMPONENTES DE UN DATA WAREHOUSE El Data Warehouse tiene varios componentes dentro de su arquitectura. Está conformado por: 1. El repositorio de datos o bodega de datos 2. Los procesos de: • Extracción • Transformación • Carga • Explotación 1.2 BODEGA DE DATOS Y DATAMARTS En 1992, Inmon define la bodega de datos como: " una colección de datos orientados a temas, integrados, no-volátiles y variante en el tiempo, organizados para soportar decisiones empresariales"2. En 1993, Susan Osterfeldt publica una definición que sin duda es la clave de bodega de datos: "Yo considero la bodega de datos como algo que provee dos beneficios empresariales reales: Integración y Acceso de datos. La bodega de datos elimina una gran cantidad de datos inútiles y no deseados, como acierta también el procesamiento desde el ambiente operacional clásico". El datamart se ajusta a la definición de una bodega de datos, con la diferencia que su enfoque es servir a un área específica del negocio. Los procesos y fuentes de datos necesarios para construir un datamart son iguales que en el caso de la bodega, pero la información almacenada en el datamart proporcionará información específica, como información de ventas, o de producción. De todas formas no se puede considerar a un datamart como una “pequeña bodega”, pues un datamart puede ser más complejo y contener mayor volumen de datos que toda una bodega, dependiendo del negocio y los requerimientos de cada caso. 2 [11] Building the Data Warehouse. 4 Figura 2. Datamart, proporciona información a un área específica de la organización Es así que la bodega de datos y el datamart son un repositorio centralizado que contiene datos de una o diversas fuentes y que está específicamente diseñado para permitir consultas y análisis detallado de los datos. En el caso del datamart, este análisis tiene un enfoque determinado a áreas específicas del negocio. 1.2.1 Características de la bodega de datos La bodega de datos se caracteriza por ser: Temático: La bodega de datos está orientada a los principales temas o entidades de la organización lo cual está en contraste con la mayoría de los sistemas de hoy en día cuya orientación se basa en los procesos o funciones. De acuerdo con esta característica, la bodega de datos para una empresa de ventas se enfocaría en proveedores, clientes, productos, mientras que un subsistema típico lo haría en proceso de compras, de ventas, de inventario. Integrada: Los datos almacenados deben integrarse en una estructura consistente. Esto se refleja en consistencia de nomenclaturas, de variables y medidas, de estructuras y códigos, de atributos de datos afines, etc. Histórico: El tiempo es parte implícita de la información contenida en una bodega de datos. A diferencia de los sistemas transaccionales, que mantienen los datos actualizados a un instante determinado en el tiempo, una bodega de datos puede mantener información de más de un instante. La bodega se carga con los distintos valores que toma una variable en el tiempo y de esta manera los datos pueden ser analizados y comparados, facilitando las labores gerenciales. No volátil: La información de la bodega de datos existe para ser leída y no modificada, por lo tanto, se carga una sola vez y permanece igual en adelante. De esta manera la actualización de la bodega de datos es la incorporación de los últimos valores que tomaron las distintas variables, sin ningún tipo de acción sobre lo que ya existía. Esto 5 está en contraste con la información de un sistema transaccional que está sujeta a permanentes inserciones, actualizaciones, reemplazos o borrados. 1.3 PROCESOS DE EXTRACCIÓN, TRANSFORMACIÓN Y CARGA DE LOS DATOS Para obtener la bodega de datos se desarrollan en forma secuencial la extracción de los datos, su transformación y finalmente su carga en la bodega. El proceso de extracción consiste en la obtención de la información desde las distintas fuentes (bases de datos y archivos operacionales) tanto internas como externas mediante herramientas de gestión de datos. Figura 3. Procesos de extracción, transformación o elaboración y carga. 3 A continuación es necesario transformar los datos en los requeridos para el depósito. El proceso consiste en filtrado, limpieza, depuración, homogeneización e integración de la información. Esto debe hacerse, ya que las bases de datos operacionales, diseñadas para el soporte de varias aplicaciones de producción, frecuentemente difieren en el formato, entonces, pueden tenerse los mismos elementos de datos, pero nombres y formatos y codificaciones incoherentes. Todas estas inconsistencias deben resolverse antes de realizar el último paso de este proceso que corresponde a la carga de los datos en la bodega. 1.4 EXPLOTACIÓN Es importante recordar que la Bodega de Datos no es un fin en sí misma, sino que es un medio para solucionar una necesidad: el análisis de información y la toma de decisiones a través de los datos de la empresa, objetivo que se logra con el proceso de explotación de la bodega de datos. En esta etapa es donde se desarrolla la inteligencia del Negocio y por lo tanto es un componente esencial del data warehouse, ya que es el punto de contacto directo con el usuario final, quien es el encargado de tomar decisiones o acciones que redundan en beneficio de la compañía y en el ROI (Retorno de la Inversión) del Data Warehouse. 3 [12] Diseño de un prototipo de bodega de datos para un modelo de empresa de ventas y aplicación de herramientas OLAP. 6 Las herramientas utilizadas para el desarrollo de inteligencia del negocio pueden incluir software de consultas, generadores de reportes, procesamiento analítico en línea, herramientas de minería de datos, etc., dependiendo de los tipos de usuarios y sus requerimientos particulares. Sin embargo, se hace necesaria la integración de varias herramientas puesto que una sola no satisface todos los requerimientos. Los niveles de aplicaciones típicas en esta etapa son: Consultas e Informes, Olap, minería de datos, Sistemas de Información Ejecutiva, y Visualización geográfica. 1.4.1 Análisis OLAP OLAP, (On-Line Analytical Processing). El Procesamiento Analítico en Línea es la técnica que permite ver y manipular los datos por dimensiones, proveyendo a los gerentes y analistas fácil acceso a la información con el fin de soportar el proceso de toma de decisión. En esta técnica de análisis, en lugar de ejecutar múltiples consultas, los datos son estructurados para permitir un acceso rápido y fácil a las respuestas de las preguntas que son típicamente formuladas. De esta manera, Olap, brinda flexibilidad en la visualización de la información. Las herramientas OLAP pueden soportar requerimientos complejos de análisis, analizar datos desde diferentes perspectivas y soportar análisis complejos contra un volumen determinado de datos. Su objetivo fundamental es proveer al usuario final el fácil análisis de los datos, con la potencia y confiabilidad de una base de datos corporativa, y con la posibilidad de ver los datos desde diversos puntos de vista o dimensiones. Permite vistas reformateadas y calculadas sin el riesgo de perder o corromper los datos originales y hace que la información pueda ser compartida por varios usuarios sin tener que duplicar archivos. En muchos casos los usuarios pueden adicionar o cambiar datos sin el riesgo de sobrescribir la información original. El uso más común de estas herramientas en una empresa se da en el análisis de ventas y compras de materia prima. Gracias a este análisis se evalúa la rentabilidad de productos, capacidad de producción o la demanda. Estos aspectos dependen directamente de los requerimientos del negocio específicos para cada empresa. Las herramientas OLAP están dirigidas principalmente a los usuarios finales por lo que requieren de una interfaz simple y deben tener una buena integración con los sistemas que las alimentan. 1.4.1.1 Conceptos y componentes 1. Cubo 7 OLAP efectúa el almacenamiento lógico de los datos en arreglos ó matrices multidimensionales denominadas cubos. El cubo contiene los datos que son de interés para los usuarios; organiza la información dentro de dimensiones y medidas en una estructura multidimensional para soportar las preguntas que tienen los usuarios acerca de los datos de su compañía. Además proporcionan un mecanismo para la consulta de datos con rapidez y con una respuesta uniforme ante diferentes cantidades de datos que contenga el cubo o por la complejidad de una consulta. Figura 4. Cubo tridimensional: Geografía, producto, tiempo.4 Un cubo se compone de dimensiones, jerarquías (niveles) y medidas. En el ejemplo de la figura 4 se tiene un cubo con tres dimensiones: Geografía, Producto y Ciudad. Además se tienen tres medidas: Unidades, Valor venta y Costo. En la celda de la parte inferior derecha de la imagen se muestran los datos para una posible pregunta gerencial: ¿Cuántas unidades, a qué valor y con qué costo se vendieron pantalones en la ciudad de Cali en el tiempo T4? Con su respectiva información. 2. Medida La medida es el valor que toma determinada variable que se está analizando. Las medidas son resultados cuantificables, o indicadores clave de desempeño usados para determinar el éxito de una operación de negocios. Orientan las respuestas a preguntas relacionadas con cuestiones numéricas como la cantidad, valor o costo. 4 [13] Business Intelligence 8 En el caso de la figura 4 se tienen tres medidas, indicando que se vendieron 1930 unidades, a un valor de venta de 6745 y con costo de 5831. Un cubo puede contener una o varias medidas, dependiendo del diseño y los requerimientos. Existen dos tipos de medidas: Medida regular: toma su dato directamente de una fuente disponible. Es un compendio de información que ya se tiene, tal como el número de unidades vendidas, ingresos, gastos, niveles de inventario. Medida calculada: obtiene como resultado un nuevo dato numérico para medidas que no están en una fuente directa disponible. Es derivada de otras medidas. Ejemplos de este tipo de medidas son: ganancia (ingresos – costos), margen de ganancia (ingreso – costo /ingreso), tiempo promedio de espera ( fecha de entrega – fecha de la orden), etc. 3. Dimensión Los atributos de tipo texto que describen cosas son organizados en dimensiones. Es necesario establecer un criterio puramente de diseño y basado en los requerimientos del negocio para establecer los atributos que se incluyen como dimensiones y los que se pueden descartar al realizar la bodega de datos. 4. Nivel Las dimensiones están construidas por niveles. Estos niveles representan la jerarquía establecida por las estructuras organizacionales y modelos de datos que la organización usa. Cada nivel inferior provee cada vez datos más detallados que relaciona a la dimensión. Las herramientas especializadas para análisis OLAP permiten fijar este nivel de granularidad en forma dinámica mientras el usuario final navega por su reporte. La dimensión tiempo provee un claro ejemplo del uso de niveles. Se tiene el año en un nivel superior, luego le siguen el semestre, trimestre, mes y por último en el nivel más inferior se encuentra el día. 1.4.1.2 Operaciones con OLAP La información que se analiza con OLAP debe estar estructurada de tal forma que se puedan realizar las siguientes operaciones: • • • • Drill Down y Roll Up (profundizar y escalar): Estas dos operaciones permiten visualizar la información a un nivel detalle distinto del actual. Drill Down permite ver un nivel mayor de detalle, es decir de lo general se va a lo particular. Roll Up permite al usuario desplazarse entre los niveles superiores para obtener información agregada, ver acumulados y sumarizaciones. Alterar las filas por columnas (permutar dos dimensiones de análisis). Rotar (Swap). Obtener interactivamente respuestas desde diferentes perspectivas. Realizar consultas que requieren combinación de diferentes fuentes contenidas en el data warehouse. 9 • • Efectuar cálculos relativamente complejos (ranking, porcentajes, sumas, etc.) Slice and Dice (Cortar y Rotar): Estas dos operaciones permiten navegar a través de un cubo visualizado. La operación Slice corta el cubo para que el usuario pueda enfocarse solamente en algunas perspectivas. La operación Dice hace que el cubo rote para poder apreciar la información desde otra perspectiva. Por ejemplo si se tiene un reporte que muestra el número de productos vendidos por cada sucursal al final del último trimestre, se puede cortar y rotar la información para mostrar los ingresos sobre los últimos dos meses por cada línea de producto. 10 II. HERRAMIENTAS DE DATA WAREHOUSE En el proyecto desarrollado están involucradas varias herramientas desarrolladas por terceros, todas ellas de libre distribución. Se cuenta con herramientas de base de datos y un servidor OLAP utilizados en el proyecto. 2. HERRAMIENTAS DE BASES DE DATOS Y OLAP 2.1 MOTOR DE BASES DE DATOS MYSQL MySQL es el servidor de bases de datos relacionales libre más popular, desarrollado y proporcionado por la compañía Sueca MySQL AB, que mantiene el copyright del código fuente del servidor SQL, así como también de la marca. MySQL AB es una empresa cuyo negocio consiste en proporcionar servicios en torno al servidor de bases de datos MySQL. Una de las razones para el rápido crecimiento de popularidad de MySQL, es que se trata de un producto Open Source, y por lo tanto, va de la mano con este movimiento. MySQL es un sistema de gestión de bases de datos relacional, licenciado bajo la GPL de la GNU. Su diseño multihilo le permite soportar una gran carga de forma muy eficiente. MySQL AB distribuye una versión comercial de MySQL, que no se diferencia de la versión libre más que en el soporte técnico que se ofrece, y la posibilidad de integrar este gestor en un software propietario, ya que de no ser así, se vulneraría la licencia GPL. Este gestor de bases de datos es, probablemente, el gestor más usado en el mundo del software libre, debido a su gran rapidez y facilidad de uso. Esta gran aceptación es debida, en parte, a que existen infinidad de librerías y otras herramientas que permiten su uso a través de gran cantidad de lenguajes de programación, además de su fácil instalación y configuración. MySQL es una herramienta Open Source. Es posible descargar el software de MySQL de Internet y usarlo sin pagar por ello. Inclusive, es posible estudiar el código fuente y cambiarlo de acuerdo a cualquier necesidad. MySQL usa la licencia GPL (Licencia Pública General GNU), para definir qué es lo que se puede y no se puede hacer con el software para diferentes situaciones. Sin embargo, 11 si se quiere tener otra licencia para incorporar código de MySQL en una aplicación comercial, es posible comprar una versión de MySQL con una licencia comercial. 2.2 MOTOR DE BASES DE DATOS POSTGRESQL PostgreSQL es un sistema de gestión de bases de datos objeto-relacional (ORDBMS) basado en el proyecto POSTGRES, de la universidad de Berkeley. El director de este proyecto es el profesor Michael Stonebraker, y fue patrocinado por Defense Advanced Research Projects Agency (DARPA), el Army Research Office (ARO), el National Science Foundation (NSF), y ESL, Inc. PostgreSQL se coloca en la categoría de las bases de datos conocidas como objetorelacionales. Ha generado algunas características que son propias del mundo de las bases de datos orientadas a objetos. Esto ha llevado a que algunas bases de datos comerciales hayan incorporado recientemente estas ventajas en las que PostgreSQL fue pionera. Tomando en cuenta esas características y sumando la estabilidad, rendimiento, disponibilidad y la eficiencia de un sistema operativo como Linux sobre el cual comúnmente es instalada, muchas empresas e instituciones la están adoptando como servidor de bases de datos. PostGreSQL es un sistema objeto-relacional, ya que incluye características de la orientación a objetos, como puede ser la herencia, tipos de datos, funciones, restricciones, disparadores, reglas e integridad transaccional. A pesar de esto, PostGreSQL no es un sistema de gestión de bases de datos puramente orientado a objetos. 2.2.1 Arquitectura de la herramienta PostgreSQL utiliza un modelo cliente/servidor. Una sesión de PostgreSQL consiste de los siguientes procesos: Proceso Servidor. Administra los archivos de las base de datos, acepta conexiones a las bases de datos de aplicaciones clientes y realiza acciones sobre las bases de datos por solicitud de los clientes. Aplicaciones cliente. Permiten realizar operaciones sobre las bases de datos. Existen diversos tipos de aplicaciones cliente: un cliente puede ser una herramienta basada en texto, una herramienta gráfica, un servidor web que accede a la base de datos para sus páginas web, o herramientas de administración de las bases de datos. El servidor y clientes pueden estar ejecutándose en diferentes equipos, por lo tanto PostgreSQL permite la comunicación entre estos procesos a través de conexiones TCP/IP. 12 El servidor soporte múltiples conexiones concurrentes de clientes. Para este propósito ejecuta nuevos procesos (forks) para cada conexión. Este proceso es transparente para los usuarios. 2.3 HERRAMIENTA DE OLAP JPIVOT – MONDRIAN Mondrian es el primer servidor OLAP de código abierto con la calidad necesaria para entrar en producción. Su primera versión suficientemente madura fue Mondrian 1.0, que fue distribuida en agosto de 2003 luego dos años de desarrollo. Esta versión contiene mejoras en las conexiones JDBC con bases de datos, incorporación de nuevas características y arreglo de buggs que se presentaban en las versiones Beta anteriores. Mondrian es un servidor OLAP escrito en Java. Permite analizar grandes cantidades de registros almacenados en bases de datos SQL. JPivot es una librería JSP que permite realizar navegación OLAP utilizando como servidor a Mondrian. 2.3.1 Arquitectura de la herramienta El sistema de Mondrian esta compuesto por cuatro capas muy bien definidas: la capa de presentación, la capa de cálculo, la capa de agregación, y la capa de almacenaje. • Capa de presentación Determina lo que ve el usuario final en su pantalla, y cómo él puede interactuar con la herramienta para hacerle consultas. Hay varias formas de presentar los resultados multidimensionales. Es posible mostrarlos con tablas, graficas de líneas, barras o pies; además de con herramientas avanzadas de visualización como mapas y graficas dinámicas. Estas pueden estar escritas en Swing o en graficas en formato JPEG o GIF o trasmitidas o un aplicación remota vía XML. • Capa de cálculo La capa de cálculo analiza, valida y ejecuta consultas en el lenguaje MDX (Ver sección 2.3.4). Una consulta es evaluada en múltiples fases. Los ejes se evalúan primero, luego los valores de las celdas relacionados con los ejes. Por eficiencia, la capa de cálculo va enviando las repuestas ya procesadas a la capa de agregación en paquetes para que esta comience a realizar su trabajo. La transformación de consultas permite a la aplicación manipular los queries existentes en vez de construir una declaración de MDX desde el principio por cada solicitud. La metadata describe el modelo dimensional y su mapeo con el modelo relacional. • Capa de agregación Una agregación es un conjunto de valores en memoria (celdas) agrupadas por columnas dependiendo de valores de las dimensiones. La capa de cálculo envía 13 solicitudes a conjuntos de celdas. Si las celdas solicitadas no están en cache, el administrador de agregación envía la solicitud a la capa de almacenamiento. • Capa del almacenamiento Es una capa RDBMS, es responsable de proveer agregaciones de datos y atributos de tablas de dimensión. Estas capas pueden estar en la misma máquina o distribuidas en diferentes máquinas. Sin embargo, las capas de cálculo y agregación deben estar en la misma máquina, porque comprometen al servidor. La capa de almacenamiento puede estar en otra máquina siendo accedida por una conexión JDBC. 2.3.2 Estrategias de almacenamiento y agregación Los servidores OLAP son categorizados de acuerdo al almacenamiento de los datos: - El servidor MOLAP (MOLAP multidimensional) almacena todos los datos en el disco utilizando estructuras óptimas para acceso multidimensional. Normalmente los datos son almacenados en arreglos densos requiriendo de 4 a 8 bytes por celda. - El servidor ROLAP (OLAP relacional) almacena los datos en DB relacionales. Cada fila de la tabla de hechos tiene una columna para cada dimensión y medida. Se requiere almacenar 3 tipos de datos: datos de la tabla de hechos (registros transaccionales), agregaciones y dimensiones. Las bases de datos MOLAP almacenan hechos en la tabla de hechos en formato multidimensional pero si hay varias dimensiones los datos serán dispersos y el formato multidimensional no tendrá un buen rendimiento. Un sistema HOLAP (OLAP hibrido) resuelve este problema almacenando los datos de mayor granularidad en bases de datos relacionales, y almacena las agregaciones en formato multidimensional. Es necesario realizar agregaciones precalculadas cuando hay muchos registros para no tener que leer todo el contenido de una tabla de hechos en ciertos queries. Comúnmente las agregaciones MOLAP son una imagen de las estructuras de datos de memoria divididas por páginas y almacenadas en el disco. Las agregaciones ROLAP son almacenadas en tablas. 14 El último componente de las estrategias de agregaciones es el cache. Este almacena en memoria agregaciones precalculadas para que futuros queries puedan acceder a valores de celdas sin tener que leerlos del disco. El cache es la parte más importante de la estrategia de agregación gracias a su adaptabilidad. Es difícil escoger el conjunto de agregaciones para precalcular, las cuales aumentan la velocidad del sistema a costo de alto espacio en disco, y en sistemas donde los datos cambian continuamente en el tiempo no es práctico mantener agregaciones precalculadas. Un tamaño de cache razonable permite al sistema desempeñarse adecuadamente en caso de queries no predecibles con pocas agregaciones precalculadas. La estrategia de agregación de Mondrian es la siguiente: - Los datos de la tabla de hechos son almacenados en RDBMS. ¿Porqué desarrollar una estrategia de almacenamiento si RDBMS ya tiene una? - Lectura de datos de agregación en cache al utilizar queries en grupo. - Si el RDBMS soporta vistas materializadas y el administrador de la base de datos elige crear vistas materializadas para agregaciones en particular, Mondrian las utilizará implícitamente. El administrador de agregaciones de mondrian tendrá en cuenta que estas vistas materializadas existen y por lo tanto que estas agregaciones son fáciles de calcular. 2.3.3 API Mondrian provee un API para que las aplicaciones cliente ejecuten queries. El lenguaje que usa Mondrian para los queries es MDX (Multidimensional Expression) donde JDBC utiliza SQL. El API también presenta el esquema de base de datos como un conjunto de objetos: Esquema, cubo, dimensión, jerarquía, nivel, miembro. Para cumplir con nuevos estándares se están agregando dos APIs a Mondrian: JOLAP es un estándar del proceso JSR y será parte de J2EE . XML for analysis, es un estándar para acceder a servidores OLAP vía SOAP( Simple Object Access Protocol ). Esto permite que componentes que no están basados en java como Microsoft Excel ejecuten quieries con Mondrian. 2.3.4 MDX 15 MDX es un lenguaje para realizar queries en bases de datos multidimensionales, de la misma forma análoga al SQL en bases de datos relacionales. Inicialmente fue definido como parte de la especificación de OLAP OLE DB, y un lenguaje similar, mdXML, es parte de la especificación XML for Analysis. Para conocer más detalles del lenguaje MDX ver anexo “Manual de Administrador”. 2.3.5 Esquema Mondrian Un esquema define una base de datos multidimensional. Contiene un modelo lógico, que consiste de cubos, jerarquías, atributos y un mapeo de este modelo a un modelo físico. El modelo lógico se compone de los constructores usados para escribir queries en lenguaje MDX: cubos, dimensiones, jerarquías, niveles y atributos. El modelo físico es la fuente de los datos que es representado por el modelo lógico. Típicamente es un modelo en estrella, que es un conjunto de tablas en una base de datos relacional. Los esquemas de Mondrian son representados en un archivo XML. Actualmente la única forma de crear este esquema es haciéndolo en un editor de texto, la sintaxis de XML no es muy complicada y se está desarrollando un editor gráfico para crear y modificar los esquemas. 2.3.6 Modelo lógico Los componentes más importantes de un esquema son los cubos, medidas y dimensiones: Un cubo es una colección de dimensiones y medidas de un área en particular. Una medida es una cantidad que se quiere medir, por ejemplo unidades vendidas de un producto, o costos de inventario. Una dimensión es un atributo, o conjunto de atributos en los cuales se pueden dividir medidas en subcategorías. Por ejemplo, es posible dividir las ventas de productos por sus colores, el género del cliente y la sucursal en donde es hecha la venta. Color, género 16 y tienda son dimensiones. 17 III. METODOLOGIA PARA EL DESARROLLO DE UN DATA WAREHOUSE 3. METODOLOGIA DE RALPH KIMBALL PARA UN PROYECTO DE DATA WAREHOUSE La metodología para el desarrollo del proyecto será la establecida por Ralph Kimball, quien es autoridad en el campo de las bodegas de datos y considerado como uno de los padres de este concepto. Kimball se ha dedicado al desarrollo de su metodología para que este concepto sea correctamente aplicado en las organizaciones, y se asegure la calidad de este tipo de proyectos. Durante su carrera ha innovado, escrito libros, educado y ha sido consultor en el campo de las bodegas de datos5. Kimball ha establecido ciertos procesos para llevar al éxito un proyecto de data warehouse. Para su desarrollo se incluyen varias tareas que pueden ser realizadas en paralelo o en forma secuencial. El correcto desarrollo de cada una de las fases planteadas en esta metodología garantiza la calidad y el correcto proceso de desarrollo. 3.1 PLANEACIÓN Y ADMINISTRACIÓN DEL PROYECTO Definición del proyecto Existen varios escenarios posibles en los que surge un proyecto de bodega de datos para une empresa. Es importante identificar el escenario para determinar el alcance y definición del proyecto. Los escenarios, originados por una demanda del proyecto en una empresa son los siguientes: • • • 5 Demanda de un sector del negocio: En este escenario, un ejecutivo del negocio tiene el propósito de obtener mejor información con un mejor acceso para tomar mejores decisiones. Demasiada demanda de información: En este escenario, existen múltiples ejecutivos del negocio buscando mejor información. En busca de demanda. En este escenario usualmente está involucrado el presidente de una empresa, quien no identifica necesidades de una bodega de [14] About Kimball Group 18 datos para su negocio pero desea incorporar este sistema por razones diferentes a requerimientos o necesidades del negocio. Al identificar el escenario, es posible determinar si existe demanda para el proyecto y de donde proviene esta demanda. El primer caso es el ideal, pues se tienen objetivos claros y con un alcance determinado de lo que se quiere del proyecto. El segundo escenario es riesgoso, pues para implementar una bodega de datos que soporte varios requerimientos de diferentes áreas de la empresa, se necesita mucho tiempo, dinero y soporte interno de la organización que perdure a largo plazo. En el tercer escenario se deben buscar los requerimientos que puede implementar la solución y basar en ellos el proyecto. En todos los escenarios es determinante contar con sponsors o patrocinadores internos del proyecto para lograr el éxito. Sino se cuenta con un patrocinador interno de la empresa involucrado en la demanda es preferible posponer el proyecto. Luego de identificar el escenario es importante conocer si la empresa está lista para realizar este proyecto. Determinar la preparación de la empresa para un proyecto de bodega de datos De acuerdo a Ralph Kimball existen cinco factores que deben existir en una organización para iniciar un proyecto de bodega de datos. • • • • • Patrocinio de la gerencia del negocio: Al contar con este patrocinio se tiene una visión del impacto que tendrá la bodega de datos en la empresa. Los gerentes son líderes influyentes dentro de la organización y determinarán el apoyo y soporte al proyecto de los de más miembros de la organización. Es preferible tener varios patrocinadores que uno solo, en caso de cambios en la organización o necesidad un apoyo más fuerte. Motivación del negocio: Al implementar una bodega de datos se busca encontrar un sentido de emergencia por parte de la organización, causado por una motivación del negocio. Un ejemplo de motivadores son la competencia y la visión competitiva. Otras organizaciones han encontrado el motivador en una crisis. Un motivador importante también es un mercado potencial. Lo importante para un proyecto de bodega de datos es alinearse con uno de estos motivadores estratégicos del negocio. Acompañamiento del departamento de tecnología y de negocio: El éxito de un proyecto de bodega de datos se produce gracias a un esfuerzo de las áreas de tecnología y de negocio, compartiendo responsabilidades. Presencia de cultura analítica: Es importante que las decisiones de la organización se basen en hechos, más que en simples intuiciones. Y que estas decisiones sean determinantes y recompensadas. Factibilidad: Es preferible que la infraestructura que soporte la bodega de datos esté presente y sea robusta. La primera factibilidad debe ser la de los datos. Si estos se encuentran sucios o no cumplen con estándares, el proyecto tendrá retrasos respecto al cronograma planeado. Desarrollo del enfoque preliminar 19 Luego de haber determinado la preparación de la organización para el proyecto, se debe centrar el proyecto en su enfoque, y justificarlo para recibir el apoyo y presupuesto de desarrollo. Para determinar el enfoque, se deben responder preguntas como: ¿Se busca el enfoque y presupuesto para cubrir el levantamiento de requerimientos y diseño? ¿O para una primera versión de la bodega? ¿O para el proyecto completo? Para definir este enfoque la base debe ser los requerimientos del negocio, no un cronograma. Para la definición del enfoque es importante seguir los siguientes parámetros: • • • • • La definición del enfoque es responsabilidad del departamento de tecnología y de negocio: El enfoque usualmente se establece para desarrollar requerimientos específicos del negocio, en un tiempo determinado. El enfoque inicial del proyecto debe ser factible y manejable: Es preferible empezar “pequeño”. Luego continuar el proceso de forma iterativa. Lanzando pequeños y rápidos desarrollos del proyecto. Enfoque inicial en un solo requerimiento del negocio soportado por una sola fuente de datos. Limitar el número de usuarios que tendrán acceso a la bodega de datos inicialmente. Establecer criterios de éxito del proyecto mientras se define el enfoque: Se refiere a entender lo que la gerencia espera del proyecto. Una vez el área de tecnología y negocios han acordado un enfoque, este se debe documentar. Desarrollar la justificación del negocio Luego de haber definido el enfoque, la justificación debe ser establecida. Esto significa que se identifican anticipadamente los costos y beneficios asociados al proyecto. Una forma de hacer esto es con el factor retorno de la inversión (ROI), que consiste en comparar el retorno financiero esperado (beneficios del negocio) contra la inversión esperada (costos). Se deben considerar las siguientes inversiones y costos: • • • • • • • Compras de licencias de software y hardware. Costos de mantenimiento: muchos productos de hardware y software requieren mantenimiento. Recursos internos de desarrollo. Recursos externos requeridos. Capacitación para desarrolladores y usuarios. Soporte a usuarios. Costos de crecimiento: Por cambios en requerimientos y actualizaciones. Se deben considerar los siguientes retornos y beneficios: 20 Los proyectos de bodegas de datos típicamente tienen un impacto en el incremento de ingresos y ganancias, más que en reducción de costos. • • • • Incremento de ingresos por nuevas ventas a nuevos y antiguos clientes. Incremento de ganancias por aumento de respuestas a la publicidad. Incremento de niveles de servicio al cliente. Descubrimiento de nuevas oportunidades. Planeación del proyecto El proyecto de bodega de datos debe tener un nombre. Luego, se identifican roles que pueden ser cubiertos por uno o varios integrantes del equipo y cada miembro del equipo también puede desempeñar varios roles, dependiendo de los requerimientos y del tamaño del proyecto. Los siguientes roles se identifican para el proyecto: • Patrocinadores de negocio. • Gerente del proyecto: Responsable de la gerencia de tareas y actividades cotidianas. • Líder de negocios del proyecto: Con el gerente del proyecto monitorea el proyecto y lo comunica a la organización. Tiene un alto entendimiento de los requerimientos del negocio. • Analista del sistema de negocios: Lidera las actividades de definición de requerimientos. • Modelador de datos: responsable del análisis de datos y el modelo dimensional. • Administrador de bases de datos de la bodega (DBA): Responsable de determinar agregaciones, particiones y soporte a la base de datos. • Diseñador de proceso ETL: Responsable del diseño de la extracción, transformación y carga de la bodega. • Desarrolladores de aplicación al usuario. • Educador de la bodega de datos. Desarrollo del plan del proyecto El objetivo de la planeación es proveer el detalle suficiente para hacer seguimiento al progreso del proyecto. Se identifican actividades, recursos y tiempos para el desarrollo. También permite monitorear los procesos y tener un plan de riesgos. Administración del proyecto Se consideran las reuniones de equipo, monitoreo del estatus, el enfoque y estrategias de comunicación. Para las reuniones se debe seguir una agenda y mantener un ambiente de comunicación entre el equipo. El monitoreo se debe realizar periódicamente, analizando el estado del proyecto en diferentes estados del tiempo. 21 3.2 ANÁLISIS DE REQUERIMIENTOS Acercamiento a la definición de requerimientos Para entender mejor los requerimientos se debe empezar por hablar con los usuarios del negocio. No se debe preguntar a estos usuarios, qué datos quieren que aparezcan en el datamart, sino hablar con ellos sobre sus trabajos, objetivos y retos e intentar conocer cómo toman decisiones, actualmente y en el futuro. Se debe considerar lo que requiere el negocio comparando estos requerimientos con los datos disponibles en las bases de datos que servirán como fuente, para lograr el soporte de estos requerimientos. Preparación de la entrevista Se deben determinar roles y responsabilidades en el equipo entrevistador. Es preferible que el mismo equipo conduzca las entrevistas a usuarios del negocio y al equipo de tecnología de la empresa. Los roles que se deben manejar, comprenden a un líder, encargado de dirigir el cuestionario, debe tener habilidades en el conocimiento del negocio y comunicaciones. También debe existir un “escribano” encargado de tomar notas durante las entrevistas. Se debe tomar el mayor detalle posible del contenido. Al finalizar las entrevistas, esta persona debe hacer preguntas para aclarar dudas y obtener una retroalimentación de los entrevistados. Investigación previa a entrevistas. Antes de iniciar el proceso de levantamiento de requerimientos, se deben analizar los reportes anuales de la compañía, para determinar las decisiones y hechos estratégicos. También es útil obtener planes de negocios de la compañía. También se debe analizar la competencia de la compañía y sus principales fortalezas y debilidades. Si ha existido un intento anterior de desarrollar una bodega de datos de la compañía, este también se debe analizar. Selección de los entrevistados Se deben seleccionar personas representativas de cada área de la organización. Es importante observar el organigrama de la compañía para determinar los candidatos a entrevista. Los principales entrevistados deben ser los administradores ejecutivos del negocio, para comprender la estrategia en un alto nivel de la empresa. Luego es importante entrevistarse con los analistas del negocio de cada área quienes conocen el manejo de información que se lleva a cabo. Desarrollo del cuestionario El líder de la entrevista debe desarrollar el cuestionario antes de iniciar la entrevista. Se deben desarrollar varios cuestionarios que serán aplicados dependiendo del rol de los entrevistados dentro de la empresa. El cuestionario debe ser de una sola página, para evitar exceso de tiempo de entrevistas. 22 Es preferible iniciar las entrevistas en un nivel medio de jerarquía de la organización, en vez de iniciar desde la parte superior con las altas gerencias, pues en los mandos medios se maneja un mayor nivel de detalle respecto a los datos que sirven para luego definir la granularidad de la bodega. Es importante que durante la entrevista se especifique terminología, la definición exacta de esta tendrá un gran impacto en la granularidad y dimensionalidad del modelo. Es posible que una palabra signifique muchas cosas, por eso lo importante es identificarlas y documentar estas inconsistencias en el vocabulario para luego confrontarlas con los entrevistados. Inicio y desarrollo de la entrevista La entrevista debe iniciarse con una introducción, para recordar al usuario sobre el proyecto y el equipo desarrollador. Los objetivos del proyecto y de la entrevista deben ser nombrados y los miembros del equipo presentados. Para documentar información útil se debe preguntar a los usuarios sobre sus trabajos, por qué los hacen y cómo los hacen. Se deben realizar preguntas en un alto nivel y luego irse al detalle para obtener respuestas cada vez más específicas. Al entrevistar ejecutivos, el principal objetivo es obtener una visión y entender globalmente el negocio. Al entrevistar administradores y analistas de la empresa, se buscan los objetivos y visión de cada departamento. En el área de auditoria y administración de datos se busca saber si existen los datos para poder dar soporte a los requerimientos encontrados en las entrevistas previas. Se debe entender las definiciones de los campos de las bases de datos, granularidad, volúmenes de datos, y otros detalles de estas fuentes de información. Al cierre de las entrevistas se debe preguntar por los criterios de éxito del proyecto, de esta forma se entienden las actitudes y expectativas frente al proyecto. Estos criterios deben ser medibles y cuantificables. Análisis de las entrevistas Si algún miembro del equipo conoce los sistemas operativos fuente de la empresa, debe explicarlos al resto del equipo para determinar la factibilidad de implementar los requerimientos encontrados. Se deben resaltar los descubrimientos y requerimientos clave para el proyecto. Se deben analizar y repasar los reportes y análisis reunidos en las entrevistas, lo cual comúnmente conlleva a una aproximación del descubrimiento de dimensiones para el modelo. Para finalizar, es importante documentar los requerimientos obtenidos y comunicarlos a los usuarios para adquirir su aprobación y compromiso. 23 3.3 MODELAMIENTO DIMENSIONAL Modelo entidad relación El modelo entidad relación (ER) es una técnica poderosa para diseñar lógicamente sistemas para el procesamiento de transacciones OLTP (procesamiento transaccional en línea). Siempre va encaminado a la eliminación de la redundancia, lo que permite que la manipulación sobre la base de datos tenga que hacerse en un solo lugar y sea mucho más rápido ya que en el momento en que la transacción requiera insertar, adicionar, borrar o modificar un dato es necesario que lo haga en un solo lugar y no en múltiples. Esto contribuye también al almacenamiento de grandes cantidades de datos dentro de las bases de datos relacionales, a través del proceso de normalización. Por eso es perfecto para la inserción y actualización de la información. Este es un modelo excelente para registrar transacciones y administración de tareas operativas. Sin embargo, para el modelamiento de una bodega de datos presenta varios problemas. Los usuarios finales no entienden ni recuerdan un diagrama entidad relación. Nos es posible que los usuarios finales naveguen sobre el modelo. El uso del modelo entidad relación va en contra del objetivo principal de una bodega de datos, de proporcionar datos de forma intuitiva y con un buen desempeño y tiempos de respuesta. Modelo Dimensional El modelo dimensional es una técnica de diseño lógico que busca presentar los datos de una forma intuitiva y que proporcione acceso de alto desempeño. Cada modelo dimensional se compone de una tabla con múltiples llaves foráneas, llamada tabla de hechos (fact table), y un conjunto de tablas más pequeñas, llamadas tablas de dimensión. Los atributos de las tablas de dimensión son las fuentes de las restricciones de búsqueda necesarias para consultar una bodega de datos. Son utilizadas como título de atributo de las filas resultantes de queries de SQL. Existen dos modelos dimensionales que predominan en las soluciones de bodegas de datos: el modelo estrella y el modelo copo de nieve. En el modelo estrella, como se ve en la figura 5 se tiene una tabla de hechos y en ella llaves foráneas a cada una de las tablas de dimensión que tiene el modelo. Es decir, cada tabla dimensional está directamente relacionada a la tabla de hechos. 24 Figura 5. Modelo estrella Una dimensión es modelada de forma copo de nieve cuando los campos de baja cardinalidad de la dimensión han sido removidos a tablas separadas y unidas a la tabla original con llaves foráneas6 (ver figura 6). En este modelo la tabla de hechos no tendrá llaves foráneas a todas las demás tablas como en el caso de la estrella. Las nuevas tablas no estarán conectadas con la tabla de hechos sino con las dimensionales establecidas. Figura 6. Modelo copo de nieve Generalmente el copo de nieve no es recomendado en ambientes de bodegas de datos. Este modelo será más complejo para los usuarios y la navegación por el modelo será más lenta. Diseño de dimensiones y hechos En el desarrollo de una bodega o un datamart comúnmente es necesario unir datamarts. Esto se logra creando una arquitectura de bus de datamarts. Como se utilizarán las mismas tablas de dimensiones, es importante que las tablas de dimensiones y hechos cumplan con las mismas especificaciones, como su granularidad. Estas dimensiones son llamadas dimensiones conformes (conformed dimensions). Se caracterizan por cumplir estas condiciones: 1. Una tabla de dimensión puede ser usada con cualquier tabla de hechos de la misma base de datos. 6 [1] The Data Warehouse Toolkit 25 2. Las interfaces de usuario y contenido de datos son consistentes para cualquier uso de la dimensión. 3. Hay una interpretación consistente de atributos, por lo tanto se obtiene la misma interpretación de la tabla en cualquier datamart. La granularidad es un factor que se debe tener en cuenta para el diseño de las tablas. Una bodega de datos debe mantener sus dimensiones basadas en datos con la mayor granularidad posible. De esta forma se facilita la expansibilidad de los datamarts para contener nuevos atributos, ya sea en las tablas de dimensiones o en la de hechos. Además, se permite de esta manera realizar técnicas de minería sobre la bodega, las cuales comúnmente requieren una alta granularidad. Figura 7. Modelo de cubo multidimensional Al diseñar las tablas de hechos y dimensiones, la idea principal es permitir que cada dato del negocio sea representado como un cubo. Donde las celdas del cubo contienen valores medidos y los bordes del cubo definen las dimensiones de los datos. Comúnmente al modelar datos de negocios se obtienen entre 4 y 15 dimensiones. En el ejemplo de la figura 7 se modela un cubo con las dimensiones Producto, Tiempo y Ciudad. A la derecha de la figura aparece el modelo dimensional que representa al cubo, con las tres dimensiones unidas a la tabla de hechos. Hechos Los hechos son medidas de las variables que se consideran. Un hecho puede ser el valor de una factura con sus respectivas relaciones: la factura es generada a un cliente, correspondiente a un producto, creada en una sucursal. Al seleccionar los hechos para el diagrama dimensional, se debe sospechar que cualquier valor numérico, especialmente si es de tipo flotante, es probablemente un hecho. Es de especial utilidad que cada hecho sea aditivo, para los análisis propios de la bodega. 26 Dimensiones Los atributos de tipo texto que describen cosas son organizados en dimensiones. Es necesario establecer un criterio puramente de diseño y basado en los requerimientos del negocio para establecer los atributos que se incluyen como dimensiones y los que se pueden descartar al realizar la bodega de datos. Los atributos dimensionales, servirán como fuente para las restricciones y encabezados de filas en los reportes. Todos los atributos dimensionales son igualmente candidatos a ser encabezados de filas en los reportes. Al agregar restricciones a una búsqueda o reporte, se está haciendo un drilling down, es decir se está estableciendo una nueva restricción en una búsqueda para obtener un mayor nivel de detalle. Un drill down eficiente mezcla atributos de las diferentes dimensiones, para realizar reportes realmente robustos. Llaves subrogadas Todas las llaves de las tablas de la bodega de datos deben ser llaves subrogadas, es decir no deben significar nada respecto a las características de su contenido ni a su fuente en los sistemas fuente. No se deben utilizar las llaves originales de un sistema fuente del cual fueron extraídas. Estas llaves subrogadas se manejan como enteros. Método de diseño de una tabla de hechos Para el diseño de la tabla de hechos, de acuerdo a la metodología de Ralph Kimball se deben seguir los siguientes pasos, de cada paso depende el siguiente. Se deben tomar decisiones respecto a: 1. 2. 3. 4. El datamart. La granularidad de la tabla de hechos. Las dimensiones. Los hechos. 1. Selección del datamart. Para un correcto desarrollo de una bodega, es preferible seleccionar e implementar primero los datamarts que dependan de una sola fuente y luego continuar con los que deben extraer datos de múltiples fuentes. En el caso más simple, seleccionar el datamart es lo mismo que seleccionar la fuente legacy de datos. En casos más complejos, se puede definir un datamart que deba incluir múltiples fuentes legacy. 2. Declaración de granularidad de la tabla de hechos. Es necesario definir claramente lo que es un registro de la tabla de hechos en el diseño dimensional propuesto. La granularidad es la respuesta a la pregunta ¿Qué es un registro de la tabla de hechos? 27 La granularidad se refiere al nivel de detalle existente en las unidades de los datos de la bodega. Entre más detalle halla, menor será el nivel de la granularidad. Entre menos detalle halla, mayor será la granularidad. Es un factor determinante en el desarrollo de la bodega, debido a que de ella depende el volumen de datos que será almacenado en la bodega y el tipo de queries que pueden ser realizados7. Figura 8. Ejemplo de granularidad en una empresa de telefonía. Generalmente la granularidad de la tabla de hechos es seleccionada como la más baja o granular posible. Existen varias ventajas para seleccionar este tipo de granularidad como una transacción individual o una línea de documento. De esta forma será mas fácil responder a nuevas consultas y agregar nuevos datos. 3. Selección de dimensiones. Generalmente la granularidad determina unas dimensiones mínimas e iniciales. Al agregar nuevas dimensiones los atributos de estas deben cumplir con la misma granularidad que se ha definido. La granularidad de un dimensión no puede ser menor que la granularidad de la tabla de hechos. 4. Selección de los hechos. La selección de granularidad de la tabla de hechos también permite seleccionar los hechos. En el caso de tabla de hechos de transacciones habrá un solo hecho, el monto de la transacción. Si el caso es una tabla de hechos de snapshot puede contener diversos resúmenes de las actividades realizadas en la toma del snapshot. Como cantidad vendida, valor, costo. Los hechos siempre deben ser específicos a la granularidad de la tabla de hechos. 3.4 DISEÑO TÉCNICO DE LA ARQUITECTURA 7 [11] Building the Data Warehouse 28 En los sistemas de información la definición de una arquitectura permite hacer un desarrollo más confiable y eficiente. Con la definición de la arquitectura se mejora la comunicación entre las diferentes áreas del proyecto, el planeamiento del proyecto, la flexibilidad y el mantenimiento del mismo. Aspectos de arquitectura Para hacer el diseño de la arquitectura se debe comenzar analizando los sistemas legacy actuales, estos deben ser consistentes y manejar de forma correcta sus transacciones, pues en la metodología del desarrollo del DWH (Data warehouse) se toma como hecho que estos sistemas son confiables. Para hacer el diseño de la arquitectura se debe comenzar analizando los sistemas legacy actuales, estos deben ser consistentes y manejar de forma correcta sus transacciones, pues en la metodología del desarrollo del DWH se toma como hecho que estos sistemas son confiables. NIVEL DE DETALLE Auditoria para los requerimientos del negocio Datos (el qué) Back Room(el como) Como se hará el proceso ETL y como se tendrán los datos disponibles para los usuarios? ¿Cómo se hace actualmente? Modelos y documentos de Arquitectura Que información se necesita para tomar mejores decisiones del negocio?, ¿Cómo se conectarán los componentes de datos en la arquitectura de bus? Modelo dimensional: ¿Cuales son las principales entidades que componen esta información y como se relacionan?, ¿Cómo se deben estructurar estas entidades? ¿Que características especificas se necesitaran para tener los datos en una forma útil en los lugares apropiados? ¿Cuáles son los principales almacenes de datos y donde deben estar localizados? ¿Que estándares y Modelos lógicos y físicos: ¿Cuales son productos proveen las características los elementos requeridas?, ¿Cómo individuales, sus derivaciones y reglas se relacionaran?, para la derivación?, ¿Cuáles son los estándares para ¿Cuáles son los desarrollo, recursos y como se administración de mapear a los código y nombres? destinos? Crear bases de datos, Escritura de extracciones y índices, Back up, cargas, documentación?. automatización de procesos, documentación. Especificaciones y modelos Implementación Front Room (el como) ¿Cuales son los principales retos que enfrenta el negocio? ¿Como se quieren analizar los datos? Infraestructura (el donde) ¿Que niveles de DWH y sistemas se requieren para tener éxito? ¿Cuales existen actualmente? ¿Que requerirán los usuarios para cargar la información de una forma útil?, ¿Qué clases de análisis y reportes se deben proveer y cuales son las prioridades? ¿Cual es el origen y destino de los datos,¿Se tiene suficiente capacidades de procesamiento y almacenamiento? ¿Cuales son las especificaciones de reportes incluyendo filas, columnas, secciones, encabezados, etc..?, ¿Quién las necesita, que tan a menudo?,¿Cómo se distribuirán? Implementación del ambiente de reporte y análisis, Construcción del conjunto de reportes inicial, entrenamiento a usuario, Documentación. ¿Como se interactúa con estas características?, ¿Qué utilidades existen en el sistema, API,s etc? Instalación y pruebas de nuevos componentes de la infraestructura. Conexión de las fuentes a los destinos y los clientes. Documentación Tabla 1. Bases de la estructura de la arquitectura de Data warehouse 29 En la tabla 1 se muestran las bases para la estructura de la arquitectura de un DWH. Entre las áreas principales se pueden destacar los datos, el área técnica y la infraestructura. Estas áreas de la arquitectura son interceptadas por filas que nos indican el detalle del incremento. Definición de Columnas Datos: El contenido del DWH son datos. Estos se refieren a todo el contenido físico del este(DWH) que mas adelante se la hará un tratamiento para permitir ver análisis multidimensionales y reportes útiles que apoyen la toma de decisiones. Los Datos guardan toda la información del ambiente del DWH y de las fuentes que surten a este. Técnica: Esta área corresponde a los procesos y a las herramientas que se aplicaran sobre los datos. Esta área se encarga a de responder a la preguntas “Como”. Por ejemplo ¿Cómo vamos a extraer los datos de la fuentes?, ¿Cómo los podemos organizar de forma que podamos hacer análisis conforme a los requerimientos del negocio?, entre otras. Esto se enfoca principalmente a las herramientas, al desarrollo del DWH y al mantenimiento del mismo. Para garantizar un mejor funcionamiento del área técnica estas se divide en: • El Back Room : Es el área del DWH responsable de extraer y preparar los datos. • El Front Room: Es el área del DWH responsable de mostrarle a los usuarios los resultados con los datos analizados y examinados, listo para que se puedan ser utilizados. Infraestructura: Corresponden la las plataformas sobre las que se ejecutan los servidores de base de datos, los servidores de aplicaciones y donde se ejecutan los procesos. La infraestructura es la planta física del DWH, se refiere principalmente al hardware utilizado para el desarrollo del proyecto. Definición de los niveles de detalle (las filas). Se comenzará desde los niveles mas altos de detalle. Parte de esa arquitectura trata de hacer modelos y documentos de diferentes niveles de detalle, algunos cercanos y otro no tan cercanos a la realidad. Los mayores niveles de detalle de la arquitectura se usan para diseñar una estructura y obtener un mejor entendimiento de los niveles de detalle mas bajos. Los modelos detallados ayudan a tomar rápidamente las especificaciones que se deben tener en cuenta durante el diseño y que por ningún motivo se pueden pasar por alto, pues de esta forma no se tendría un entendimiento total del negocio. Nivel de requerimientos del negocio: Este nivel no trata de ninguna implementación técnica del DWH, el interés del arquitecto del proyecto se centra en entender el comportamiento de los negocios, los procesos de la empresa y las limitaciones que podrían ir en contra del desarrollo del DWH. Nivel de modelos de arquitectura: Este es el primer donde se piensa en la forma de responder a los requerimientos. 30 Un modelo de arquitectura, propone los principales componentes de una arquitectura que se deben implantar para consecución de los requerimientos. Todas las tecnologías de arquitectura, deben ser justificadas y deben garantizar que funcionan juntas en un sistema. Se debe definir si los componentes técnicos se comunican unos con otros, si las suposiciones administrativas para usar la tecnología son razonables y si la organización tiene recursos para soportar esta tecnología. Nivel de detalle del modelo: Hace referencia a las especificaciones funcionales de cada componente de la arquitectura, esto debe incluir suficiente información que sirva como guía al equipo de desarrolladores para tener una implementación mas confiable y con menos errores. Esto también sirve en el caso que se quiera establecer un contrato legal, pues lo establecido en el la especificación es lo mismo que se va implementar y se puede evitar que el cliente exija mas funcionalidades cuando nunca fueron determinadas formalmente. El modelo dimensional y modelo físico de una fact- table corresponden la los modelo de detalle para el área de datos. Nivel de implementación: La implementación es realizada a partir de los detalles del modelo, pues ahí se tiene considerado la arquitectura y detalles para llevar acabo el desarrollo. El desarrollo del proyecto debe estar documentado. 3.5 PROCESOS DE EXTRACCIÓN, TRANSFORMACIÓN Y CARGA Este proceso comprende varios aspectos determinantes para la bodega de datos. Por lo tanto se debe seguir un plan para su correcto desarrollo. Se establecen varios pasos que conducen al desarrollo del proceso y se describen a continuación. Paso 1. Plan de alto nivel El proceso de diseño se inicia con un esquema simple de los componentes del plan que son conocidos: Las fuentes y los destinos de los datos. Se identifica de donde provienen los datos y las características y problemas con dichas fuentes. Con este esquema es posible comunicar la complejidad del proyecto a la gerencia y miembros del equipo de desarrollo del proyecto. Las aplicaciones de ETL realizan tres pasos: extracción, transformación y carga a la bodega de datos. Estos pasos se deben ver en un esquema de alto nivel: Tomar los datos de las fuentes, transformarlos y cargarlos en los destinos. Paso 2. Herramientas ETL Las extracciones típicamente se escriben en el lenguaje de la fuente de los datos. Existen herramientas que realizan todo el proceso de extracción, transformación y carga que buscan minimizar el tiempo requerido para estas tareas. Estas herramientas implican 31 un costo por licencias y posibles incompatibilidades o dificultades con transformaciones complejas que fuesen requeridas para el proceso. Ya se haga el proceso con código desarrollado, o herramientas existentes, es determinante realizar prácticas que mejoren el rendimiento del proceso, como ordenar los datos o cargarlos de forma rápida para cargas masivas en las bases de datos. Paso 3. Plan detallado El plan se inicia seleccionando la tablas en las que se va a trabajar, en cual orden y secuenciar las transformaciones para cada conjunto de datos. Se debe graficar un diagrama con estas estructuras. Todas las tablas de dimensión deben ser cargadas antes que las tablas de hechos. Se debe iniciar el desarrollo de la aplicación ETL con la dimensión más simple y continuar con las demás hasta llegar la tabla de hechos. Paso 4. Poblar una tabla de dimensión simple La principal razón para iniciar el proceso con una dimensión estática y simple es la facilidad para poblar esta tabla. A continuación se presenta información para realizar el proceso completo de ETL relevante a cualquier tabla destino (dimensiones y hechos). • Extracción de una dimensión Se deben entender las características de la fuente de datos. Si la fuente es relevante para la dimensión destino, como se actualiza esta fuente, si hay alguna hora en el día en la cual no se deba acceder a esta fuente, son preguntas que se deben resolver en esta etapa. También se deben generar reportes “de extracción”, que permitan extraer únicamente los campos o datos requeridos de cada fuente. Existen dos fuentes principales de datos: archivos y bases de datos. Si la fuente se encuentra en una base de datos, se crea un solo proceso que haga fluir los datos desde la fuente a la sección de transformación y carga. Si la fuente es un archivo, se requieren varios pasos en el proceso: extracción al archivo, ubicación del archivo en el servidor del proceso, transformar los datos del archivo y cargar el archivo en la base de datos utilizada para transformar y cargar datos. • Transformación de una dimensión Existen transformaciones comunes y sencillas, como el cambio de un tipo de dato a otro, o cambiar letras minúsculas por mayúsculas, otras más complejas se indican a continuación. - Asignación de llaves substitutas (surrogate en inglés) Las llaves substitutas son las llaves primarias de las tablas del modelo dimensional, que son diferentes y no deben tener ninguna relación con las llaves primarias de las tablas fuentes ni de los datos mismos. Típicamente se utilizan enteros para estas llaves. - Combinación de diferentes fuentes 32 Si un dato depende de diferentes fuentes se debe mapear el dato destino y los datos orígenes para controlar esta transformación. • Carga Para mejorar el rendimiento, la primera carga a la bodega se debe hacer con las características de población masiva de datos del motor de base de datos del modelo dimensional. Los principales motores de bases de datos tienen esta característica y su uso depende del producto utilizado. Otra forma de mejorar el rendimiento de carga es suprimir los índices en la base de datos, que son costosos para el rendimiento de la carga, y este costo no se recupera en mejora de rendimiento del análisis multidimensional de la bodega. Paso 5. Implementación de la lógica del cambio de una dimensión Al cambiar los datos de una dimensión, ya sean nuevos o actualizaciones a los datos previos, es preferible construir la extracción de tal forma, que se extraigan únicamente los datos que han cambiado. Al determinar los cambios, se debe contar con reglas del negocio que determinen como manejar estos cambios en los atributos. Si se determina que la modificación es legítima y es posible actualizar el dato, se utiliza la técnica de una dimensión cambiante. El primer paso para preparar la dimensión consiste en determinar si ya existe un registro antiguo del dato. Al encontrar una modificación se aplica alguno de los siguientes tipos de respuesta al cambio. Tipo 1: Sobrescribir. Se toma el nuevo dato de la fuente y se sobrescribe la tabla de la dimensión con el nuevo contenido. • Tipo 2: Crear un nuevo registro de la dimensión. Se crea un nuevo registro de la dimensión con una nueva llave subrogada. • Tipo 3: Bajar el antiguo valor. Se crea un nuevo campo en la dimensión que contenga el antiguo valor del dato modificado y se actualiza la dimensión con el nuevo contenido. • Cada tabla de dimensión usará una, dos o las tres técnicas para administrar los cambios de datos. Paso 6. Poblar las dimensiones restantes Para poblar el resto de dimensiones se sigue el proceso del paso 4, y se cargan ya sea con el uso de una herramienta de carga existente o con el desarrollo de una que soporte conexiones ODBC o JDBC. Paso 7. Carga histórica de hechos 33 En el proceso de ETL debe existir un paso para reemplazar las llaves primarias de las fuentes por las llaves subrogadas que se han asignado a cada dimensión, y que deben ir como llaves foráneas en la tabla de hechos. Para mantener una integridad referencial en la bodega, - que significa que por cada llave foránea en la tabla de hechos exista un registro en la dimensión correspondiente – se realizan dos búsquedas de llaves subrogadas en el proceso de extracción. Una ocurre cuando se utiliza la técnica 2 del paso 5, y se ha creado un nuevo registro de una dimensión que contiene una nueva llave subrogada y un campo modificado con el resto del contenido original. La segunda búsqueda ocurre cuando se están procesando los registros de la tabla de hechos. En este momento se debe buscar en todas las dimensiones los registros que coincidan con el dato que se está buscando relacionar con la tabla de hechos, y una vez encontrado el registro de la dimensión, agregar su llave subrogada a la llave foránea de la tabla de hechos. Este proceso funciona bien para bodegas de datos que no manejan grandes cantidades de registros, pues al ser grande el tamaño de datos es preferible mantener una tabla de búsqueda que registre la llave primaria en la fuente y la llave subrogada en la dimensión. D esta manera se mejora el rendimiento al poblar la tabla de hechos. Una vez se cuenta con todas las llaves foráneas de la tabla de hechos, esta tabla se empieza a cargar. Paso 8. ETL de una tabla de hechos incremental Al realizar cargas semanales o periódicas a la bodega desde las fuentes, es decir al actualizar la bodega, se deben extraer y procesar únicamente las transacciones que han ocurrido luego de la última carga. Para seleccionar únicamente estas nuevas transacciones se pueden usar los logs de las bases de datos, y de esta forma identificar los datos que han cambiado en el período analizado. El log captura cada cambio que haya sido realizado a un registro. También es posible crear losgs en las bases de datos fuentes que registren únicamente los cambios que son importantes para la bodega, utilizando triggers. Paso 9. Operación y automatización de la bodega de datos Idealmente el proceso ETL de una bodega de datos se ejecuta de manera automática y no atendida. Las operaciones típicas en la bodega son que se deben tener en cuenta en este paso son las siguientes: • Definición de tarea – Flujos y dependencias • Horarios de tareas – basadas en tiempos y hechos • Monitoreo • Logging • Manejo de excepciones • Manejo de errores • Notificaciones 34 Estas características deben ser proporcionadas para que la bodega de datos pueda ser un sistema de producción. Procesos automáticos: Extracción. Para que todo el proceso ETL sea automático, el paso de extracción debe notificar al siguiente cuando empezar. Este proceso también debe registrar su trabajo en una metadata, que contenga el nombre de la tarea realizada, el usuario, la fecha, tiempo tomado para la tarea y cualquier otro hecho que quiera ser monitoreado. • Calidad y limpieza de datos. En todos los sistemas se encontrarán problemas de calidad y limpieza de datos, por lo tanto se deben establecer políticas que determinen estándares de calidad aceptables y procedimientos a realizar cuando estos problemas se identifiquen. • Mejoramiento de datos. Para garantizar el uso de los mejores datos posibles para la bodega, se deben tener en cuenta los siguientes pasos: - Identificar la fuente de datos con la mejor calidad: Es posible que se encuentren varias fuentes con los mismos datos, pero en algunas se tenga mejor calidad de los mismos. - Identificar variaciones en palabras: Como errores de ortografía y mayúsculas y minúsculas. - Discutir problemas de datos con el equipo. - Arreglar los problemas de datos en las fuentes cuando sea posible, en vez de hacerlo en el proceso ETL o directamente a la bodega. - No arreglar todos los problemas. Si existen muchos problemas en las fuentes, arreglarlos en el proceso ETL irá en contra del rendimiento, estos problemas deben ser responsabilidad de los sistemas fuentes. - Realizar tareas de limpieza sobre los datos. Aseguramiento de la calidad Un vez se tienen los datos, es importante determinar si este contenido es realmente correcto. Se pueden hacer varios procesos para determinar esto: Cruce de datos. Se ejecutan varios queries contra las fuentes de datos y se verifica que el resultado de estos queries sea el mismo que el dado con los datos seleccionados del proceso ETL Examen manual. Si existen varias fuentes para un mismo dato, o eventos de ese tipo, es preferible examinar los datos manualmente y compararlos con el resultado esperado. Validación del proceso. Al utilizar la bodega de datos es posible encontrar diferentes resultados de los que se harían con simples queries sobre las fuentes. Esto se da debido a la limpieza y transformaciones hechas a los datos en el proceso ETL. Por lo tanto 35 es importante identificar las causas de las diferencias y determinar cual resultado es realmente el correcto. 3.6 SELECCIÓN E INSTALACIÓN DE PRODUCTOS Selección de Productos. Una vez se tiene completa la arquitectura, se deben tener en cuenta dos componentes fundamentales para la selección de productos: • Requerimientos técnicos. • Requerimientos de negocio. Mantener el negocio enfocado Para la selección de la herramienta se debe hacer un riguroso estudio de cada una de ellas, mirar sus ventajas y desventajas y saber el alcance que se quiere con cada una para saber las cosas que se pueden y nos se pueden hacer. Otro punto importante en la escogencia de la herramienta son los requerimientos de los usuarios: los requerimientos del negocio, mirar el análisis y el grado de procesamiento que se puede obtener con cada una ya sea un motor de base de datos, una herramienta de ETL o una herramienta OLAP o de reportes. También de deben mirar las limitaciones de los usuarios en lo referente al HW, pues no tiene sentido contratar una herramienta que consume muchos recursos cuando no se tiene la plataforma para soportarla.. Para la escogencia de las herramientas también se debe tener presente el plan del proyecto, la arquitectura para mirar los alcances técnicos y la documentación de los requerimientos que seguramente ayudan a la mejor opción. El momento de la escogencia de las herramientas tiene su momento indicado durante el desarrollo del proceso de DWH. Si se hace muy temprano no se tendrá un real entendimiento de los requerimientos del negocio y seguramente no se hará la mejor opción. Si espera y se hace un tiempo después tendremos mas información acerca los requerimientos, las plataformas y se puede escoger de esta forma una mejor opción. Áreas a evaluar para la escogencia de las herramientas Se tienen cuatro área fundamentales para la evaluación y escogencia de las herramientas. • Plataforma de hardware: Se deben avaluar las diferentes plataformas para mirar su capacidad y escoger las herramientas teniendo esto en cuenta la limitaciones que se podrían presentar. La plataformas de servidores donde se ejecutarán las herramientas de análisis dimensional, la plataforma donde tenemos los Datamart y los demás servidores de aplicaciones deben ser analizadas cuidadosamente. 36 • • • Plataformas de Base de Datos: Para proyectos pequeños se puede utilizar un motor de BD sencillo como mysql que no se muy pesado y que podrán soportar las plataformas. Para proyectos grandes se debe considerar un motor de BD con mas características, que me seguridad y que me permita realizar mas y mejores aplicaciones, por ejemplo PostgreSQL, Oracle, SQL Server, interbase, entre otras. Herramientas de Data Staging: Esta es el área de trabajo del DWH donde la información se extrae de las fuentes, se le hace limpieza a los datos, se hacen las transformaciones y se envían a los datamarts . Estas son las herramientas mas costosas y complejas del proyecto. Herramienta de acceso a los datos: Esta elección es difícil porque en el marcado no existe un líder, y además se terminan usando varias de estas herramientas por los gran variedad de requerimientos que de desea cumplir. Cuando se usa software propietario es fácil la utilización por que se solicita soporte técnico para que ayude en la capacitación y manejo de la herramienta y aprovechar algunos beneficios adicionales que pueda ofrecer. Para la escogencia de la herramienta se debe tomar un tiempo prudente , debemos recordar que las herramientas tecnológicas cambian continuamente por eso hay que hacer lo posible para mantenerse siempre actualizado. Una posibilidad con el software propietario es que se puede tener acceso a versiones trial por 90 días para tener la oportunidad de conocer el producto y decidir si definitivamente se ajusta o no a las necesidades del proyecto. Cuando las herramientas son SW libre se deben manejar recursos como foros on-line y hacer contacto con otros usuarios del producto para de esta manera tener algo de soporte técnico. 3.7 CARACTERÍSTICAS DE APLICACIONES PARA USUARIOS FINALES En los pasos explicados anteriormente, se ha analizado el diseño e implementación; ahora se profundizará más en el front room. El objetivo del front room es proporcionar la interfaz que mostrará al usuario reportes y análisis multidimensionales que tomará como base en la toma de decisiones. Una aplicación de usuario final, provee un diseño y estructura a los reportes tomando como base los datos del DWH. Especificación de aplicaciones para usuario finales Hay algunos pasos importantes en el proceso de especificación de las aplicaciones de usuario final: • Determinar el conjunto inicial de plantillas de reportes • Determinar la navegación en los reportes. • Determinar el estándar de plantillas de reportes. • Determinar la especificación de estas plantillas. 37 Determinar el conjunto inicial de plantillas de reportes: El primer paso es tener la lista de reportes que se va a desarrollar en la aplicación. Para esto se deben hacer 3 tareas fundamentales: • Identificar los posibles reportes: mirando la documentación que se tiene del proyecto, mirando los requerimientos del negocio se encuentra un gran potencial para determinar los posibles reportes. Con esta información se hace una lista de reportes a planificar, especificando el nombre, las filas y columnas con los elementos de datos y las medidas. Por ejemplo, tener la lista de la información de los departamentos que van a estar involucrados en los reportes y análisis. • Consolidar la lista de candidatos: Una vez se tiene la lista de reportes, de debe categorizar dicha lista. Las categorías se reconocen rápidamente debido a la forma como están estructuradas las compañías. Para analizar como categorizar los reportes, se pueden tener en cuenta las siguientes preguntas: ¿Como es el negocio?,¿Cuál es la tendencia?, entre otras. • Priorizar la lista de reportes: Una vez la lista de reportes se tiene establecida, se debe definir con el usuario final para establecer prioridad en los reportes que ellos van a utilizar. Definir la navegación para los reportes: Se debe desarrollar un modelo que permita al usuario encontrar la información de una manera más rápida y eficiente. Se debe crear un modelo inicial para la navegación y poder analizar de una manera más fácil los reportes y análisis multidimensionales. Definir los estándares de las plantillas de reportes: En esta parte se establecen estándares en cuanto a los elementos de la BD. Esta estandarización es muy importante por ayuda para entender la naturaleza de los reportes. La estandarización se enfoca principalmente a los elementos de datos del DWH que son utilizados para alimentar los reportes. Detalles de especificación de la plantillas de reportes: Cada organización tiene un diferente grado de detalle en la documentación del proyecto. También se debe determinar si el equipo que trabaja en el proyecto hace formalmente la documentación de las aplicaciones. Si la respuesta es negativa se debe presionar para que la tenga al día y a disposición para cualquier usuario que la quiera mirar. • Formato de especificación: La especificación del aplicación para el usuario final tiene 2 partes fundamentales: - La definición, que provee información básica acerca de la plantillas de reportes. - El diseño, provee una representación visual de lo que debería mostrar el reporte. La definición de las plantillas de reportes incluye el nombre, la descripción o propósito, frecuencia con que debe ser actualizado, parámetros, entrada, entre otros. 38 Tipos de aplicaciones para usuarios finales: Existen varios tipos de aplicaciones: 1. Basadas en Web: Estas aplicaciones son accedidas a través de un browserde Internet. Los usuarios podrían conectarse y ver los reportes vía intranet o Internet entrando a la pagina del DWH. 2. Herramienta independiente: Con la herramienta se diseñan algunas plantillas de reportes que el usuario va a poder acceder a través de una interfaz. Esta implementación no es muy flexible, pues en el caso que se quiera añadir reportes sale costoso, pero de igual forma es muy rápida. Estos reportes son muchas veces almacenados en archivos compartidos para que todas las personas la puedan acceder. 3. Herramienta de interfaz ejecutiva: Proporciona una estructura de acceso a las plantillas de reportes a través de una serie de screens. Estas implementaciones permiten fácilmente la navegación en la plantilla escogida. 4. Interfaz por código: Estas herramientas proporcionan un API que permite diseñar una interfaz. Esta es una buena posibilidad, pues se utiliza una herramienta de desarrollo grafico y la navegación se puede ajustar mejor a las necesidades del usuario. 3.8 MANTENIMIENTO Y CRECIMIENTO DE UN DATA WAREHOUSE Administración del entorno de data warehouse Cuando una empresa adquiere sus sistemas de información el cambio que tendrán estos sistemas es muy poco, sin embargo cuando se desarrolla un proyecto de DWH se debe pensar en el mantenimiento posterior a la implementación, pues estas aplicaciones tienen gran tendencia a crecer a medida que crece la información de la organización. La inversión en el mantenimiento del DWH es bastante importante, sin embargo estas aplicaciones retornan la inversión que se les hace. Diagnóstico de resultados incorrectos Cuando se tienen problemas en el DWH y no se tienen los resultados esperados, se debe revisar alguno de los pasos anteriores en el ciclo de vida. También se tiene una serie de preguntas que en el caso de no ser positivas, hay mas razones para revisar los pasos anteriores. • ¿El proyecto tiene el apoyo de los altos ejecutivos de la organización? • ¿El equipo de desarrollo del proyecto entendió correctamente los requerimientos del usuario? • ¿Los usuarios finales entienden el modelo dimensional o tienen que recurrir a las complicada tablas del datamart directamente? • ¿Para la escogencia de las herramientas análisis de datos, los usuarios finales fueron considerados en el proceso? • ¿Los datos utilizados para alimentar el datamart son correctos? 39 • • • • • • • ¿Son coherentes los reportes que se están obteniendo del DWH?, de no ser así, ¿ el equipo de desarrollo entiende la inconsistencias y tiene informado a los usuarios finales ? ¿Los datos en el DWH se renuevan de manera oportuna? ¿La BD esta bien diseñada o las consultas tardan mucho tiempo para darnos el resultado? ¿Tiene el DWH un equipo constante para la construcción de plantillas de reportes que ayuden al usuario a hacer mejores análisis? ¿Los usuarios finales han recibido suficiente entrenamiento en las herramientas generadoras de análisis multidimensionales o de reportes? ¿Conocen los usuarios del negocio a quien recurrir del equipo del DWH en el caso que tengan problemas con este? ¿Alguien responde cuando ellos necesitan consultoría para resolver problemas? Enfoque en usuarios del negocio Durante las semanas posteriores a la terminación del proyecto, se debe tener en cuenta que la cercanía del usuario debe ser esencial, pues se le debe prestar la mayor ayuda posible para que el proyecto comience a mostrar sus resultados rápidamente. No se debe esperar que los usuarios llamen a los miembros del equipo, los más correcto es estar con ellos porque si los problemas duran mucho tiempo el usuario se podría sentir decepcionado con el producto. Administración de operaciones Cuando el DWH hace grandes cargas, se debe tener la implementación bien robusta para que el proceso sea completamente exitoso; se le debe hacer mantenimiento a la infraestructura técnica, al manejo y mantenimiento de la BD y al manejo de los datos y mata data. • • • Manejo de la infraestructura técnica: esta es una de las pocas ares donde el DWH se parece a los sistemas operacionales de la empresa. Se debe monitorear frecuentemente la infraestructura técnica para más adelante no tener problemas con el DWH. Las áreas críticas donde pueden haber problemas son los servidores de aplicaciones, los servidores de BD, entre otros. Desempeño de la base de datos: Se pueden sacar indicadores cada vez que se cargan datos o cuando se ejecuten rutinas que involucren esta plataforma. Con estos indicadores se puede medir el desempeño de esta plataforma. Mantenimiento de los datos y meta datos: Los datos en el DWH cambian mucho, es decir por la gran cantidad de procesos y por la transacionabilidad de las operaciones diarias, continuamente se están anexando datos al DWH y los usuarios finales cada vez están necesitando más y más análisis de datos para mejorar la calidad en la toma de decisiones. El impacto de estos cambios debe analizarse de forma detenida, y determinar si tienen algún efecto en contra de la funcionalidad de la plataforma del DWH. 40 Todos estos cambios en la plataforma se deben documentar para tener detallado el seguimiento que se le hace y además para que todos los miembros del equipo de desarrollo estén actualizados acerca del estado del proyecto. 41 IV. DESARROLLO DEL PROCESO DE CONSTRUCCIÓN DEL DATAMART Para el desarrollo de la construcción del datamart se sigue la metodología estudiada de Ralph Kimball, dado que establece claros procesos para todo el ciclo del desarrollo del proyecto y garantiza la calidad y eficiencia de la solución de inteligencia de negocios. Esta metodología fue desarrollada desde el inicio del proceso de construcción, hasta llegar a las etapas de interacción con el usuario y documentación del proyecto. En las siguientes secciones se describen los procesos realizados para cada fase del proyecto que garantizan su calidad y cumplimiento. 4. PLANEACIÓN Y ADMINISTRACIÓN DEL PROYECTO 4.1 OBJETIVO DEL PROYECTO Construir un datamart que soporte el análisis multidimensional de ventas de la empresa Ubiquando, utilizando herramientas de libre distribución para mantener una solución basada en software libre. 4.2 DEFINICIÓN DEL PROYECTO Para el proyecto desarrollado se identificó un alto interés de la gerencia de la empresa para el éxito de su implementación. La demanda del proyecto se encuentra en el gerente de Ubiquando, quien identifica necesidades de obtener mejor información sobre su negocio para tomar mejores decisiones para la empresa y así mejorar su competitividad. Esta demanda se satisface al implantar la solución de inteligencia de negocios del proyecto, con un datamart encargado de transformar los simples datos operativos de la empresa en información útil de sus ventas, utilizando análisis OLAP. Toda la solución es basada en software libre y no utiliza ningún componente comercial, tanto en las etapas de desarrollo como en las de producción. Esto permite reducir costos y poner a disposición la inteligencia de negocios a PYMES como Ubiquando y empresas que no cuentan con el soporte financiero de las grandes empresas, históricamente beneficiadas con las costosas soluciones comerciales de inteligencia de negocios. 42 4.3 ALCANCE DEL PROYECTO El proyecto contiene todos los componentes de una bodega de datos o datamart. Como fuentes se tienen una base de datos de contabilidad de la empresa, hecha en Mysql de forma relacional y varios archivos de texto. Para el proceso de extracción, transformación y carga, se desarrolló un software en java que permite realizar esta tarea utilizando las diferentes fuentes de información. La bodega de datos, o datamart es construida en una base de datos en PostgreSQL. Finalmente, el análisis OLAP es realizado utilizando el servidor OLAP Mondrian. Todas estas herramientas son soportadas por varios sistemas operativos, incluyendo Microsoft Windows y Linux. Esto permite una gran portabilidad y la posibilidad de realizar el análisis OLAP vía web, gracias a que el análisis OLAP se realiza utilizando un navegador de Internet. El datamart proporciona información sobre las ventas de Ubiquando, al utilizar las fuentes mencionadas para producir la información. Se desarrollan e implementan los requerimientos de ventas determinados luego del levantamiento y análisis de requerimientos que son acordados con la empresa. 4.4 JUSTIFICACIÓN DEL PROYECTO EN EL NEGOCIO Además de ser un proyecto académico, el proyecto busca mejorar la productividad y beneficios económicos de Ubiquando. Como justificación para el negocio se prevén los siguientes beneficios: Incrementar el número de negocios Se establece que al realizar un análisis por segmentos de clientes, la empresa realizará esfuerzos de marketing más eficientes, al enfocar determinados productos a los candidatos de compra apropiados. • Mejorar servicios y productos en temporadas Se determina que se pueden mejorar las ventas de productos en temporadas de alta demanda de los mismos, gracias al acceso a mejor información. Se pueden realizar tácticas de promoción y realizar mejoras al proceso de fijación de precios para aprovechar la alta demanda de las temporadas encontradas. • Selección de los mejores clientes Se establece que al realizar un análisis sobre las ventas de clientes y productos se determinan preferencias y necesidades de clientes sobre determinados productos. Se pueden ofrecer productos, que se pronostica que el cliente necesitará, dadas sus últimas compras, u ofrecer productos que se diagnostiquen como de su preferencia. • 43 5. ANÁLISIS DE REQUERIMIENTOS Para el levantamiento de requerimientos se realizaron entrevistas a personas del área técnica y de negocio de la empresa. Los requerimientos identificados en esta etapa (capítulo 5.1), se implementan con la herramienta OLAP Mondrian. 5.1 LEVANTAMIENTO DE REQUERIMIENTOS Para realizar la recolección de requerimientos se realizaron entrevistas con los futuros usuarios de la solución y también con personas del área de tecnología de la empresa. Los requerimientos del negocio se describen a continuación. • • • • • • • • • • Ver ventas por productos. Ver ventas por cliente. Ver ventas por tiempos. Ver ventas de productos por cliente. Ver ventas por productos en el tiempo. Ver ventas por cliente en el tiempo. Ver ventas por cliente y producto en el tiempo. Ver ventas por ciudad en el tiempo. Ver ventas por productos en ciudades. Ver ventas por ciudad. Estos requerimientos fueron los acordados a implementar con la empresa, todos ellos soportados con datos encontrados en la base de datos con ayuda de archivos que también funcionan como fuentes. 5.2 DOCUMENTACIÓN DE REQUERIMIENTOS La documentación de estos requerimientos pretende presentar una descripción de cada uno y las fuentes de donde se extraerán los datos para producir la información de la cual cada caso es responsable. El detalle de cada fuente de datos se encuentra en el capítulo 7. Para conocer la forma como se accede a cada reporte que implementa a cada requerimiento desde la herramienta, ver el anexo “Manual de administrador”. 44 5.2.1 Ver ventas por productos Descripción: Esta consulta permite explorar el valor de las ventas de Ubiquando, discriminando estas ventas por sus líneas de productos. Al hacer drill down se exploran las ventas por productos individuales. Fuentes de datos: Base de datos “netcontable” y archivos planos “facturas.txt” y “productos.txt”. 5.2.2Ver ventas por cliente Descripción: Esta consulta permite explorar el valor de las ventas de Ubiquando, discriminando estas ventas por sus sectores de clientes. Al hacer drill down se exploran las ventas por clientes individuales. Fuentes de datos: Base de datos “netcontable”, archivo plano “clientes.txt”. 5.2.3 Ver ventas por tiempos Descripción: Esta consulta permite explorar el valor de las ventas de Ubiquando, discriminando estas ventas por las fechas de venta. Al hacer drill down se limita más el criterio del reporte, permitiendo analizar las ventas por año, semestre, trimestre y día. Fuentes de datos: Base de datos “netcontable”. 5.2.4 Ver ventas de productos por cliente Descripción: Se muestran las ventas que se han hecho a los clientes con sus respectivos productos. Fuentes de datos: Base de datos “netcontable”, archivos planos “facturas.txt”, “clientes.txt” y “productos.txt”. 5.2.5 Ver ventas por productos en el tiempo Descripción: Se muestra el reporte que indica las ventas que se han realizado de los productos de Ubiquando en el tiempo. Fuentes de datos: Base de datos “netcontable” y archivo plano “facturas.txt”, “productos.txt”. 5.2.6 Ver ventas por cliente en el tiempo Descripción: Permite visualizar las ventas hechas a clientes en períodos de tiempos. Fuentes de datos: Base de datos “netcontable” y archivo plano “clientes.txt”. 45 5.2.7 Ver ventas por cliente y producto en el tiempo Descripción: Esta consulta es la más elaborada y compleja del cubo de ventas. Comprende una unión entre todas las dimensiones del cubo para dar respuesta a una consulta de tipo ventas por cliente y producto vendido en esa venta en cierto segmento del tiempo. Es posible analizar las ventas de cierta línea de productos o de un producto a un segmento de clientes o a un cliente específico en un año, semestre, trimestre o día determinado. Fuentes de datos: Base de datos “netcontable”, archivos planos “clientes.txt”, “productos.txt”, “facturas.txt”. 5.2.8 Ver ventas por ciudad Descripción: Esta consulta permite ver el valor de las ventas por ciudades en las que Ubiquando tiene sus clientes. Fuentes de datos: Base de datos “netcontable”. 5.2.9 Ver ventas por productos en ciudades Descripción: Esta consulta permite ver el valor de las ventas por cada línea de producto o productos individuales en las ciudades de venta. Fuentes de datos: Base de datos “netcontable” y archivo plano “clientes.txt” 5.2.10 Ver ventas por ciudad en el tiempo Descripción: Esta consulta permite ver el valor de ventas de cada ciudad en diferentes períodos de tiempo (año, semestre, trimestre, mes o día) dependiendo del criterio del analista. Fuentes de datos: Base de datos “netcontable”. 46 6. MODELAMIENTO DIMENSIONAL Para iniciar el modalamiento dimensional se debe tener en cuenta el principal objetivo de cualquier bodega de datos o datamart: el análisis de la información. Este análisis es realizado por medio de reportes, por lo tanto al modelar el datamart se debe tener como objetivo la información deseada en los reportes. Dada la definición de los requerimientos se identifican reportes de ventas que contengan información sobre: ciudades, segmentos de clientes, clientes individuales, líneas de productos, productos individuales y períodos del tiempo en que se realizan las ventas. Estas categorías son dimensiones en el modelo dimensional, y la tabla en donde aparece la medida, que es el valor de las ventas es llamada tabla de hechos. La relación de la tabla de hechos a las tablas de dimensiones es de uno a muchos. Esto se comprende lógicamente por el modelo del negocio, que tiene ventas en muchas ciudades, a varios segmentos de clientes, de varias líneas de productos en diferentes períodos del tiempo. En las siguientes secciones se detalla cada componente del modelo dimensional. 6.1 EL DATAMART El modelo diseñado e implementado es un datamart. Este concepto se diferencia al de bodega de datos en que el datamart busca centrarse en un objetivo único, o en el análisis de un área específica de la empresa. En el caso de este proyecto el objetivo es analizar las ventas únicamente. Una bodega de datos sirve a varias áreas de una empresa, y en muchos diseños es compuesta de varios datamarts. Sin embargo, no es posible clasificar a un datamart como una “pequeña bodega de datos”, pues el concepto de datamart o bodega es solo de diseño. Un datamart de un área de una gran empresa puede ser más complejo y contener un mayor número de datos que toda una bodega de datos de una empresa de menor tamaño, o con diferentes bases de datos. El datamart implementado en este proyecto tiene varias fuentes de datos que poblan el datamart: una base de datos implementada en MySQL de la contabilidad de la empresa y varios archivos de texto que complementan la información de la base de datos. Los detalles de estas fuentes de datos se encuentran en el capitulo 7. 6.2 DEFINICIÓN DE LA GRANULARIDAD 47 Se definió la granularidad de la tabla de hechos como la más baja o granular posible. Esta granularidad corresponde a una venta de un producto a un cliente en una fecha determinada, es decir una transacción individual. De esta forma será posible llegar al grado de detalle de consultar una venta específica, aunque este no sea el objetivo de un datamart. La medida, que es el campo de valor de la tabla de hechos es el valor de una venta con la granularidad establecida. 6.3 DIMENSIONES Se definen las dimensiones que soportan los requerimientos definidos, cumpliendo con la granularidad de la tabla de hechos. Las siguientes secciones relacionan las tablas diseñadas para la base de datos con su dimensión correspondiente. 6.3.1 Dimensión línea Tabla: dim_linea. Contiene la información acerca de las líneas de productos para poder hacer una clasificación por cada uno de estos. Campo-Nombre lin_idLinea Tipo/Tamaño Descripción INT8 lin_descripcion Varchar(40) Llave Primaria Llave primaria de dim_linea Si Nombre de la línea (Instalación, Desarrollo, Capacitación, Soporte, Asesoría) No Tabla 2. Tabla dim_linea 6.3.2 Dimensión producto Tabla: dim_producto Contiene la información de los productos que ofrece la empresa. Campo-Nombre pro_idProducto Tipo/Tamaño Varchar(20) Descripción Llave Primaria Llave primaria de dim_Producto Si pro_descripcion Varchar(100) Nombre del Producto No proidLinea Llave foránea a la tabla dim_linea, indica a cual línea pertenece este producto. No INT8 Tabla 3. dim_producto 48 6.3.3 Dimensión cliente Tabla: dim_cliente Contiene la información de los clientes que maneja la empresa. Campo-Nombre Tipo/Tamaño Descripción INT8 cli_Nombre Varchar(100) Nombre del Cliente No cliIdSector IINT8 Llave foránea a la tabla dim_sector, indica a cual sector pertenece este cliente No Llave foránea a la tabla dim_geografia, indica a cual ciudad pertenece este cliente No cliIdGeografia Varchar(30) Llave primaria de dim_Cliente Llave Primaria cli_idCliente Si Tabla 4. dim_cliente 6.3.4 Dimensión sector Tabla: dim_sector Contiene información de los sectores a los que pertenecen los clientes. Cada cliente pertenece a un sector y a un subsector. Campo-Nombre sec_idSector Tipo/Tamaño INT8 Descripción Llave Primaria Llave primaria de dim_Sector Si sec_descripcion Varchar(40) Nombre del sector No sec_subcategoria Varchar(40) Nombre de la subcategoría No Tabla 5. dim_sector 6.3.5 Dimensión geografía Tabla: dim_geografia Contiene información sobre la ciudad a la que pertenece un cliente. Campo-Nombre Tipo/Tamaño Descripción Llave Primaria geo_idGeografia INT8 Llave primaria de dim_geografia Si geo_ciudad Ciudad a la que pertenece el cliente No Varchar(40) Tabla 6. dim_geografia 49 6.3.6 Dimensión tiempo Tabla: dim_tiempo Contiene información de las fechas en que se realizan las ventas. Esta tabla contiene información sobre el año, semestre, trimestre, mes y día. Se tienen estos diferentes campos para una misma fecha para permitir al usuario navegar por la dimensión dependiendo del grado de profundidad de fecha que prefiera. Campo-Nombre Tipo/Tamaño Descripción Llave Primaria tie_idTiempo INT8 Llave primaria de dim_tiempo Si tie_dia Varchar(30) Descripción del día en que se realizó la venta No tie_mes Varchar(30) Contiene información del mes No tie_trimestre Varchar(30) Contiene información del trimestre No tie_semestre Varchar(30) Contiene información del semestre No tie_ano INT4 No Contiene información del año Tabla 7. dim_tiempo 6.4 TABLA DE HECHOS En este datamart hay un solo hecho: el hecho de la transacción. Este hecho es el valor de una venta; también es llamado una medida. Esta medida cumple con la granularidad definida, es decir es el valor de una transacción individual de una venta. Los demás campos son llaves foráneas, para relacionar esta tabla con sus dimensiones. Tabla: fact_venta Registra información de las ventas que hace la empresa. Campo-Nombre Tipo/Tamaño venIdCliente INT8 Descripción Id de la dim_cliente Llave Primaria No venIdProducto Varchar(20) Id de la dim_Producto No venIdTiempo INT8 Id de la dim_Tiempo No ven_valor Float(30) Medida que muestra el valor de la venta que hizo a un cliente de un producto determinado en una fecha especifica. No Tabla 8. Fac._venta 50 6.5 DISEÑO DEL MODELO DIMENSIONAL Luego de haber determinado las dimensiones y la tabla de hechos se diseña el diagrama multidimensional implementado en la base de datos PostgreSQL. Este diagrama es un modelo de copo de nieve, pues algunas dimensiones (producto y cliente) se tienen asociadas otras dimensiones. Se prefirió diseñar el modelo en copo de nieve por ofrecer una mayor claridad de diseño y mejor organización de los datos. El concepto negativo que se tiene de este modelo por ofrecer un menor rendimiento que el de estrella, no aplica en este caso. El número de datos manejados por el datamart no compromete su rendimiento; además, gracias a los bajos costos que el hardware ofrece, cada vez la desventaja del rendimiento se vuelve más insignificante. Figura 9. Diagrama multidimensional del datamart Como aparece en el diagrama de la figura 9 y en el análisis de dimensiones se tienen seis dimensiones. Para la dimensión cliente se tienen dos asociadas a ella: las dimensiones sector y geografía. Cada una de ellas clasifica a los clientes de una manera diferente, agrupándolos por sectores del mercado o por ciudades respectivamente. La dimensión producto también tiene una dimensión asociada, permitiendo agrupar productos en líneas de productos. 51 7. DISEÑO TECNICO DE LA ARQUITECTURA 7.1 DATOS Los datos constituyen la información del DWH, se refieren al componente principal de los procesos que llevan a la construcción de la aplicación. Para el análisis de los datos, se comienza por analizar los datos fuentes que manejan los procesos de la empresa, el tipo de la base de datos y la estructura de las tablas. La empresa Ubiquando tiene actualmente un modelo E – R en sus sistemas OLTP descrito en la figura 10. Esta base de datos se encuentra implementada en MySQL y es llamada netcontable. En el diagrama (figura 10) únicamente se muestran las relaciones entre las tablas de interés para el datamart (las tablas que se encuentran en negrilla) para dar claridad al diagrama. Figura 10. Diagrama entidad relación de la base de datos netcontable 52 Para el datamart desarrollado, se requiere la información relacionada con las ventas. Para este caso en especial las tablas utilizadas de netcontable fueron: • • • • TERCERO: Tiene la información referente a los clientes. CIUDAD: Tiene la información referente a las ciudades de los clientes. COMPROBANTE: Tiene información referente a las ventas. Relaciona el cliente y la fecha en que es realizada una venta. Detalle: Tiene la información de los productos relacionados con las ventas y además el valor de la venta. Adicionalmente tiene los siguientes archivos planos: • sectores.txt: maneja la información de los sectores a los que pertenecen los clientes. Este archivo tiene la siguiente estructura y datos: ID_Sector • clientes.txt: La información del cliente es manejada en la tabla tercero del modelo E-R. Este archivo tiene la información de los sectores a los que están asociados los clientes. La estructura del archivo es la siguiente. ID_Cliente • ID_Sector lineas.txt: tiene la información referente a las líneas a las que pertenecen los productos. El archivo tiene la siguiente estructura: ID_Linea • Nombre Nombre productos.txt: Este archivo tiene la información de los productos que ofrece la empresa. La información de estos productos se almacenaba inicialmente en la BD fuente de la empresa y se manejaba a través de los sistemas OLTP, pero esta (Ubiquando) hizo una labor de limpieza de datos para organizar mejor los productos que esta ofreciendo actualmente. Estos productos se registran actualmente en un el archivo “productos.txt”. El archivo tiene la siguiente estructura: ID_Producto Nombre 7.1.1 Mapeo de los datos en el modelo dimensional 53 Para cargar de los datos en el modelo dimensional se requiere la información de las tablas del modelo E-R mencionadas anteriormente, y además, para tener la información completa se requiere de los archivos planos. En la siguiente tabla se pueden ver las tablas del modelo dimensional y su respectiva fuente de datos. Tablas del la Estrella dim_geografia dim_sector dim_cliente dim_linea dim_producto dim_tiempo fact_venta Fuente de datos CIUDAD sectores.txt TERCERO, clientes.txt linea.txt producto.txt tiempo.txt COMPROBANTE, DETALLE, ventas.txt Tabla 9. Tabla con destinos y fuentes de datos Los campos de las tablas del modelo dimensional se deben mapear de la siguiente forma: • En dim_geografia: geo_idgeografia con el campo codigo de la tabla ciudad. geo_ciudad con el campo nombre de la tabla ciudad. • En dim_sector: sec_idsector con el primer campo de los datos almacenados en el archivo sector.txt. sec_descripcion con el segundo campo de los datos almacenados en el archivo sector.txt. sec_subcategoria con el tercer campo de los datos almacenados en el archivo sector.txt. • En dim_cliente : cli_idcliente con el campo ID de la tabla tercero. cli_nombre con el campo nombre de la tabla tercero. cliidgeografia con el campo ciudad de la tabla tercero. cliidsector con el segundo campo de los datos almacenados en el archivo clientes.txt • dim_linea lin_idlinea con el primer campo de los datos almacenados en el archivo lineas.txt lin_descripcion con el segundo campo de los datos almacenados en el archivo lineas.txt • dim_producto pro_idproducto con el primer campo de los datos almacenados en el archivo productos.txt 54 pro_descripcion con el segundo campo de los datos almacenados en el archivo productos.txt. proidlinea con el primer campo de los datos almacenados en el archivo productos.txt. • dim_tiempo La información se carga de un archivo que contiene registrados los días, meses, trimestres, semestres y años correspondientes a los desde el 2004 al 2006. Este archivo es estático pues es cargado una sola vez en la bodega y no actualiza temporalmente como los otras tablas de la bodega. • fact_venta venidcliente con el campo tercero de la tabla comprobante venidproducto con el campo ref de la tabla detalle venidtiempo con el campo creacion de la tabla comprobante ven_valor con el campo valor de la tabla detalle. En la figura 11 se resumen las fuentes y destinos de los datos que componen el datamart de ventas de Ubiquando. Siguiendo la figura mencionada se puede tener con mayor claridad en la forma que se realizó el proceso de extracción y carga de la bodega. Figura 11. Diagrama de mapeo de los datos. Las tablas en negrilla indican archivos o bases de datos fuentes, las demás son las tablas destino del modelo dimensional 55 7.2 BACK ROOM Es el área del DWH responsable de extraer y preparar los datos. Aquí se explicará como se realizo el proceso ETL en la bodega. Se parte de los datos fuentes en los sistemas de información de la empresa. Una de las políticas del datawarehousing es no modificar los sistemas de la empresa pues se estarían alterando sus procesos de negocios y de esta forma los procesos OLTP. Extracción: La empresa Ubiquando maneja la base de datos Mysql en sus sistemas de información. En el proyecto se hizo una extracción de las tablas que interesan para el desarrollo de la estrella, estas tablas fueron : tercero, comprobante, ciudad y detalle. Además de las tablas, también se hace extracción de los archivos fuentes pues la información que estos tienen es fundamental para la información que contendrá la estrella. La herramienta de ETL fue desarrollada por el grupo del proyecto. Se probaron algunas herramientas libres de ETL y las pruebas en pilotos fueron exitosas pero al momento de colocarlas en un ambiente de producción no se adaptaron a las necesidades del sistema que se necesitaba implementar. Para esta herramienta se utilizaron conexiones JDBC que me permiten seleccionar los registros y guardarlos en unas tablas temporales, esta práctica con JDBC permite tener un mejor control de las tablas y así poder obtener solo los campos que interesan. En los clientes, por ejemplo, solo se requiere guardar en la temporal cliente el ID y el nombre, datos como el telefono y el email no son necesarios en la tabla temporal. Transformación: Para la transformación de los datos se hizo el mapeo descrito en la sección 7.1.1. Para entender mejor la transformación se puede ver que las tablas temporales (Figura XXXX) no tienen una estructura exactamente igual a las tablas fuente pues solo se hizo la extracción de los datos que interesaban, de esta forma se hicieron las transformaciones. Carga: Luego de tener los datos transformados en las tablas temporales y los archivos de texto listos, se hace el proceso de carga en la estrella o modelo dimensional que consiste en tomar estos datos fuentes y guardarlos en la estrella de tal forma que queden listos para que se puedan utilizar herramientas OLAP o de Análisis Multidimensional. Finalmente, los datos extraídos y transformados son cargados en la base de datos del modelo dimensional de la figura XXXXX. 7.3 FRONT ROOM El datamart de ventas de Ubiquando está estructurado de forma que se puede ver la información multidimensional de las ventas con respecto a los clientes, sectores de clientes, productos, líneas de producto y en medidas de tiempo (por día, mes, trimestre, semestre y año). Para mayor información de los reportes ver sección 10. 56 Respecto a los reportes también se puede decir que serán actualizados semanalmente, cuando el usuario ejecute la aplicación de carga para actualizar la información contenida en la bodega. 7.4 INFRAESTRUCTURA DE DATA WAREHOUSE Las bases de datos y los servidores OLAP se ejecutan sobre maquinas de configuración muy similar, por esta razón se puede ver que tanto los servidores de BD como los servidores OLAP tiene la siguiente configuración: Sistema Operativo: Fedora Core1. Memoria RAM: 512 megas con capacidad para correr en maquinas de 256 megas. Disco Duro: 60 Gb. Procesador: Pentium 4 de 2.4Ghz. Una plataforma con esta capacidad tiene la facultad de soportar las BD Postgresql y MySQL, la herramienta de ETL desarrollada en JAVA y el servidor OLAP JpivotMondrian. La BD de los sistemas de información de la empresa esta montada sobre MySQL y la bodega en PostgreSQL. 57 8. PROCESO DE EXTRACCIÓN, TRANSFORMACIÓN Y CARGA El proceso de extracción, transformación y carga (ETL) es el responsable de llevar a cabo el plan de mapeo descrito en la sección 7.1.1. Para este proceso se extraen los datos fuente que se encuentran en la base de datos netcontable descrita en la sección 7.1 y de los archivos de texto descritos en la misma sección. Se realizan las transformaciones requeridas en cada caso y finalmente se cargan los datos en la base de datos donde se encuentra el modelo dimensional. 8.1 HERRAMIENTA DE EXTRACCIÓN, TRANSFORMACIÓN Y CARGA Para el proyecto se determinó la necesidad de desarrollar una herramienta de ETL debido a la falta de soporte para las necesidades de extracción y transformación del proyecto por parte de las herramientas disponibles en la comunidad de software libre. La herramienta es desarrollada en java y cumple con la única función de extraer los datos de las fuentes determinadas (sección 7.1), realizar las transformaciones requeridas a los datos y cargar los datos al modelo dimensional implementado en PostgreSQL. Para mantener una consistencia en las referencias, primero se procesan las dimensiones independientes (sector, línea, geografía) que son las que poblan sus respectivas tablas de la base de datos dimensional (dim_sector, dim_linea, dim_geografia) directamente, sin realizar ninguna asociación a ninguna otra tabla ni transformaciones necesarias. Luego se poblan las dimensiones producto y cliente y por último la dimensión tiempo y la tabla de hechos. En las siguientes secciones se describe el proceso realizado para poblar cada una de estas tablas. Para más detalles de la herramienta y su proceso realizado ver anexo “Manual Administrador” sección 6. 8.1.1 ETL de dimensión sector Este proceso tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en el archivo sectores.txt a la dimensión dim_sector. En este método, lo primero que se hace es borrar de la tabla dim_sector de la bodega todo lo que halla, para luego cargar en esa misma tabla los datos que se encuentren en el archivo sectores.txt. Por lo tanto, si se hiciese algún cambio en el archivo de sectores, al realizar la siguiente carga, la información del archivo sectores.txt actualizada reemplaza a la que se había cargado previamente. 8.1.2 ETL de dimensión línea 58 Este proceso tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en el archivo lineas.txt a la dimensión dim_linea. En este método, lo primero que se hace es borrar de la tabla dim_linea de la bodega todo lo que halla, para luego cargar en esa misma tabla los datos que se encuentren en el archivo lineas.txt. Por lo tanto, si se hiciese algún cambio en el archivo de líneas, al realizar la siguiente carga, la información del archivo lineas.txt actualizada reemplaza a la que se había cargado previamente. 8.1.3 ETL de dimensión geografía Este proceso tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en la base de datos netcontable en la tabla ciudad. Los campos extraídos de esta tabla son codigo y nombre. Estos campos son extraídos y cargados a una tabla temporal llamada ciudad, encontrada en la base de datos martVentas (nombre de la base de datos del diagrama multidimensional figura 5) de PostgreSql. ciudad es independiente y se encuentra aislada del diagrama estrella de la bodega. En esta tabla se realizan las transformaciones que sean necesarias, para luego cargar los datos de esta tabla temporal a la tabla dim_geografia. Todos los datos de la tabla dim_geografia son borrados antes de cargar los nuevos datos de la tabla temporal. Y los datos de esta tabla temporal son borrados luego de realizar el proceso. 8.1.4 ETL de dimensión producto Este proceso tiene como objetivo extraer, transformar y cargar los datos fuentes, encontrados en el archivo productos.txt a la dimensión dim_producto. En este método, lo primero que se hace es borrar de la tabla dim_producto de la bodega todo lo que halla. Luego se leen los datos del archivo de texto y se hace la transformación para asignarle una llave foránea a cada producto, que indique su pertenencia a una línea. 8.1.5 ETL de dimensión cliente Este proceso tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en la base de datos netcontable en la tabla tercero y el archivo clientes.txt. Los campos extraídos de la tabla tercero son id, nombre y ciudad. Primero se borran todos los datos existentes en la tabla dim_cliente y luego se insertan los datos encontrados en las fuentes. Los campos cli_idcliente, cli_nombre y cli_ciudad de la tabla destino dim_cliente son tomados de netcontable; y el campo cli_idsector que relaciona a un cliente con un sector, tiene como fuente el archivo clientes.txt. Son necesarias estas dos fuentes, pues en la base de datos netcontable no se establece correctamente le pertenencia del cliente a un sector, por lo tanto se requiere este archivo adicional. 8.1.6 ETL tabla de hechos 59 Este proceso tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes a la tabla de hechos fact_venta. Dado que durante el proceso de desarrollo del proyecto, la empresa Ubiquando realizó un cambio en su base de datos netcontable para registrar correctamente los productos asociados a una factura (es decir a una venta), fue necesario realizar dos procesos distintos para la carga de esta tabla, uno antes de realizar este cambio y otro para después de haber realizado el cambio. Para el primer escenario, en el que los productos no están bien relacionados a cada venta registrada en la base de datos netcontable en la tabla comprobante, se tiene el archivo ventas.txt. Los campos extraídos de la tabla comprobante son numero, creacion, tercero y total. Los elementos del archivo de texto son: el número de factura y el código del producto vendido en esa factura. Para realizar el proceso ETL de esta tabla, se crea una tabla temporal llamada comprobante en la base de datos martVentas. Esta tabla es independiente del diagrama estrella de la bodega, solo se utiliza para hacer las transformaciones requeridas antes de insertar los datos en la tabla fact_venta de la bodega. En esta tabla temporal se insertan los datos extraídos de todos los registros de la tabla comprobante de la base de datos netcontable. Luego de haber extraído los datos, se borran todos los datos de la tabla fact_venta y se poblan con los nuevos. Para el segundo escenario, en el que los productos sí se relacionan correctamente en la base de datos con cada venta registrada, no se utiliza el archivo ventas.txt. En su lugar, se utiliza la tabla detalle de la base de datos netcontable. Esta tabla contiene datos sobre cada producto incluido en una factura y se extraen los campos: n_comp, secuencial, ref y valor. Los campos extraídos de la tabla comprobante son numero, creación y tercero. En este caso el campo total no es extraído de comprobante dado que el dato sobre el valor del producto vendido se extrae del campo valor de la tabla tercero. Para realizar el proceso ETL de esta tabla, se crea una tabla temporal llamada comprobante y una tercero en la base de datos martVentas. Estas tablas son independientes del diagrama estrella de la bodega; solo se utilizan para hacer las transformaciones requeridas antes de insertar los datos en la tabla fact_venta de la bodega. En estas tablas temporales se insertan los datos extraídos de todos los registros de la tabla comprobante y sus tablas asociadas detalle, que hallan sido ingresados después de la fecha en que se realizó el cambio en el registro de las ventas con productos de la base de datos fuente netcontable. Luego de haber extraído los datos, se borran todos los datos de la tabla fact_venta y se poblan con los nuevos. Los datos de las tablas temporales son borrados al final del proceso de carga. 60 9. CONSTRUCCIÓN DEL CUBO El análisis OLAP de la solución es realizado con la herramienta Mondrian (ver sección 2.3). Por lo tanto, el cubo que refleja el diseño del modelo dimensional del datamart será construido de acuerdo a los requerimientos de Mondrian para tal fin. Se deben crear dos archivos para utilizar un cubo en Mondrian, en las siguientes secciones se describen las estructuras de estos archivos. Para conocer más detalles de la creación de estos archivos, ver anexo “Manual de Administrador”. Luego de haber establecido las estructuras de estos archivos, un usuario puede navegar por estas estructuras (dimensiones, atributos y medidas) de forma intuitiva e interactiva, utilizando únicamente el Mouse desde la interfaz gráfica ofrecida por Mondrian – Jpivot. Mondrian maneja dimensiones, niveles, categorías y medidas. Las Dimensiones (tiempo, producto, etc.) están compuestas por niveles, que representan la jerarquía establecida por las estructuras organizacionales y los modelos de datos de la organización. Estas determinan la ruta posible de drill down y drill up en la herramienta Olap, Mondrian. Los valores que toma cada nivel son conocidos como las categorías. Las Medidas representan los indicadores de gestión del negocio para analizar (datos numéricos). 9.1 ARCHVIVOS JSP El archivo JSP es utilizado para definir la ruta y una consulta inicial de un cubo Mondrian. Las siguientes líneas de código son las líneas esenciales para establecer esta ruta. <%-- Archivo martVentas.jsp --%> <jp:mondrianQuery id="query01" jdbcDriver="org.postgresql.Driver" jdbcUrl="jdbc:postgresql://localhost/martVentas" catalogUri="/WEB-INF/queries/martVentas.xml" jdbcUser="postgre" jdbcPassword=""> select {[Measures].[Valor]} on columns, {[Producto]} ON rows from cuboVentas Figura 12. Líneas del archivo jsp 61 La primera línea indica la ruta en donde se encuentra la base de datos dimensional que soporta el datamart. Esta base de datos, implementada en PostgreSQL se llama “martVentas” e implementa el modelo de copo de nieve definido en la sección 6.5. La segunda línea indica la ruta donde se encuentra el archivo XML que define las estructuras (ver sección 9.2) del cubo. En el caso de este proyecto, este archivo XML es llamado “martVentas.xml”. La tercera línea indica el nombre de usuario y contraseña del usuario que tiene acceso a la base de datos del modelo dimensional. Las últimas líneas definen una consulta MDX (Ver sección 2.3.4) que será la consulta predeterminada del datamart. Esta consulta muestra el valor de ventas para el total de productos. 9.2 ESTRUCTURAS XML Mondrian, para entenderse con la base de datos diseñada con el modelo dimensional, usa un archivo xml en el cual se describen las dimensiones, medidas y cubos que se usan en el proceso de análisis multidimensional del datamart de ventas de Ubiquando. En estas descripciones se asocian los nombres de los campos de la base de datos. El archivo XML que define las dimensiones y la medida usados en el cubo que soporta el datamart de Ubiquando es como sigue: <%-- Archivo martVentas.xml --%> <?xml version="1.0"?> <Schema name="martVentas"> <Cube name="cuboVentas"> <Table name="fact_venta"/> <Dimension name="Segmento" foreignKey="venidcliente"> <Hierarchy hasAll="true" primaryKeyTable="dim_cliente" primaryKey="cli_idcliente"> <Join leftKey="cliidsector" rightKey="sec_idsector"> <Table name="dim_cliente"/> <Table name="dim_sector"/> </Join> <Level name="Sector" table="dim_sector" column="sec_descripcion" uniqueMembers="true"/> <Level name="SubCategoria" table="dim_sector" column="sec_subcategoria" uniqueMembers="true"/> <Level name="Cliente" table="dim_cliente" column="cli_nombre" uniqueMembers="true"/> </Hierarchy> </Dimension> <Dimension name="Ciudad" foreignKey="venidcliente"> <Hierarchy hasAll="true" primaryKeyTable="dim_cliente" primaryKey="cli_idcliente"> <Join leftKey="cliidgeografia" rightKey="geo_idgeografia"> <Table name="dim_cliente"/> <Table name="dim_geografia"/> </Join> <Level name="Ciudad" table="dim_geografia" column="geo_ciudad" uniqueMembers="true"/> 62 <Level name="Cliente" table="dim_cliente" column="cli_nombre" uniqueMembers="true"/> </Hierarchy> </Dimension> <Dimension name="Producto" foreignKey="venidproducto"> <Hierarchy hasAll="true" primaryKeyTable="dim_producto" primaryKey="pro_idproducto"> <Join leftKey="proidlinea" rightKey="lin_idlinea"> <Table name="dim_producto"/> <Table name="dim_linea"/> </Join> <Level name="Linea" table="dim_linea" column="lin_descripcion" uniqueMembers="true"/> <Level name="Producto" table="dim_producto" column="pro_descripcion" uniqueMembers="true"/> </Hierarchy> </Dimension> <Dimension name="Tiempo" foreignKey="venidtiempo"> <Hierarchy hasAll="true" primaryKey="tie_idtiempo"> <Table name="dim_tiempo"/> <Level name="ano" column="tie_ano" uniqueMembers="true"/> <Level name="semestre" column="tie_semestre" uniqueMembers="true"/> <Level name="trimestre" column="tie_trimestre" uniqueMembers="true"/> <Level name="mes" column="tie_mes" uniqueMembers="true"/> <Level name="dia" column="tie_dia" uniqueMembers="true"/> </Hierarchy> </Dimension> <Measure name="Valor" column="ven_valor" aggregator="sum" formatString="#,###"/> </Cube> </Schema> Figura 13. Código de la estructura del cubo Este archivo debe estar referenciado en todos los archivos jsp que contengan una consulta MDX, que estará basada en la información de este archivo. Todas las consultas MDX que se hacen en el datamart, se hacen sobre los datos almacenados en el cubo descrito en el documento. El archivo martVentas.xml une las dos partes básicas de la construcción del cubo: la definición de dimensiones y la del cubo. Se establecen estas dos partes en la misma estructura pues en este caso no se comparten las dimensiones con varios cubos, pues se desarrolla únicamente el de ventas. Se emplea el esquema de “Dimensiones propias de cubos”. El esquema de “Dimensiones propias de cubos”, se especifica al interior de los tags <Cube>, para hacer que solo ese cubo use cada dimensión. El cubo es definido para soportar el diagrama dimensional. Un cubo es un conjunto de dimensiones y medidas. Las dimensiones son la forma por la cual se quiere ver la medida, y la medida es un valor numérico que mide un hecho objeto del análisis. En las próximas secciones se explicará detalladamente el cubo, dimensiones y medidas usadas en este archivo xml. 9.2.1 Estructura del cubo 63 En el proyecto y específicamente en los esquemas de Mondrian el cubo diseñado se define como “martVentas”. Este cubo se compone de varias dimensiones y de una medida: Nombre del cubo: martVentas Nombres dimensiones: segmento, ciudad, linea, producto y tiempo. Nombre tabla de hechos (fact table): fact_venta El cubo se basa en la tabla de hechos fact_venta. En este cubo se almacena información sobre una venta, relacionándola con el producto, cliente y tiempo en el cual ocurre esta venta. Además existen las dimensiones dim_sector y dim_linea que categorizan a los clientes y los productos respectivamente. Este cubo está diseñado para suplir una necesidad de un reporte Diario. Tiene una granuralidad baja debido a que el registro con menor granuralidad es una sola venta a un cliente de un solo producto. La estrategia para poblar este cubo consiste en extraer los datos necesarios de diferentes fuentes y cargarlos a cada dimensión como se describe en la sección 7.1.1. 9.2.2 Estructura de la dimensión Segmento La dimensión Segmento es usada para analizar las ventas según los segmentos de clientes de Ubiquando. Esta dimensión está asociada directamente a la dimensión cliente, por lo tanto es un tipo de clasificación de clientes, la otra forma de clasificarlos es por la ciudad. Esta forma se describe en la siguiente sección. En esta dimensión se manejan tres niveles: sector, subcategoría y cliente. Por lo tanto, se puede hacer drill down y drill up para navegar a través de los niveles y de esta forma modificar una consulta, para restringir una búsqueda a una categoría general, una subcategoría de esta o clientes específicos de las subcategorías. Esta dimensión se define en el código de la siguiente forma: <Dimension name="Segmento" foreignKey="venidcliente"> <Hierarchy hasAll="true" primaryKeyTable="dim_cliente" primaryKey="cli_idcliente"> <Join leftKey="cliidsector" rightKey="sec_idsector"> <Table name="dim_cliente"/> <Table name="dim_sector"/> </Join> <Level name="Sector" table="dim_sector" column="sec_descripcion" uniqueMembers="true"/> <Level name="SubCategoria" table="dim_sector" column="sec_subcategoria" uniqueMembers="true"/> <Level name="Cliente" table="dim_cliente" column="cli_nombre" uniqueMembers="true"/> </Hierarchy> </Dimension> Figura 14. Estructura dimensión segmento 64 9.2.2 Estructura de la dimensión Ciudad La dimensión ciudad es usada para analizar las ventas según las ciudades donde se ubican los clientes de Ubiquando. Esta dimensión está asociada directamente a la dimensión cliente, por lo tanto es un tipo de clasificación de clientes, la otra forma de clasificarlos es por el segmento. Esta otra forma se describe en la siguiente anterior. En esta dimensión se manejan dos niveles: ciudad y cliente. Por lo tanto, se puede hacer drill down y drill up para navegar a través de los niveles y de esta forma modificar una consulta, para restringir una búsqueda a una ciudad general o clientes específicos de las ciudades. Está definida de la siguiente forma: <Dimension name="Ciudad" foreignKey="venidcliente"> <Hierarchy hasAll="true" primaryKeyTable="dim_cliente" primaryKey="cli_idcliente"> <Join leftKey="cliidgeografia" rightKey="geo_idgeografia"> <Table name="dim_cliente"/> <Table name="dim_geografia"/> </Join> <Level name="Ciudad" table="dim_geografia" column="geo_ciudad" uniqueMembers="true"/> <Level name="Cliente" table="dim_cliente" column="cli_nombre" uniqueMembers="true"/> </Hierarchy> </Dimension> Figura 15. Estructura dimensión ciudad 9.2.3 Estructura de la dimensión Producto La dimensión producto permite analizar las ventas por producto. Debido a que Ubiquando tiene muchos productos, se tiene otro nivel llamado “dim_linea” que clasifica los productos en líneas de productos. En esta dimensión se manejan dos niveles: línea, y producto. Por lo tanto, se puede hacer drill down y drill up para navegar a través de los niveles y de esta forma modificar una consulta, para restringir una búsqueda a una línea general, o productos específicos de cada línea. Está definida de la siguiente forma: <Dimension name="dim_producto" foreignKey="venidproducto"> <Hierarchy hasAll="true" primaryKeyTable="dim_producto" primaryKey="pro_idproducto"> <Join leftKey="proidlinea" rightKey="lin_idlinea"> <Table name="dim_producto"/> <Table name="dim_linea"/> </Join> <Level name="Linea" table="dim_linea" column="lin_descripcion" uniqueMembers="true"/> <Level name="Producto" table="dim_producto" column="pro_descripcion" uniqueMembers="true"/> </Hierarchy> </Dimension> Figura 16. Estructura dimensión producto 65 9.2.4 Estructura de la dimensión tiempo La dimensión tiempo es la dimensión más importante de todas las dimensiones en cualquier proceso de análisis multidimensional. Es decir, todos los analistas por lo general desean ver su información discriminada por meses, semanas días, o años. Es por esto que esta dimensión contiene toda la información referente al tiempo. Es decir, un día determinado a que mes, trimestre, semestre y año pertenece, para poder ser agrupado por estos niveles. Tiene cuarto niveles por los que se puede hacer drill down y drill up que son año, semestre, trimestre, mes y día. Esta definida de la siguiente forma: <Dimension name="dim_tiempo" foreignKey="venidtiempo"> <Hierarchy hasAll="true" primaryKey="tie_idtiempo"> <Table name="dim_tiempo"/> <Level name="ano" column="tie_ano" uniqueMembers="true"/> <Level name="semestre" column="tie_semestre" uniqueMembers="true"/> <Level name="trimestre" column="tie_trimestre" uniqueMembers="true"/> <Level name="mes" column="tie_mes" uniqueMembers="true"/> <Level name="dia" column="tie_dia" uniqueMembers="true"/> </Hierarchy> </Dimension> Figura 17. Estructura dimensión tiempo 66 10. REPORTES IMPLEMENTADOS Los reportes implementados cumplen con los requerimientos planteados en el capítulo 5 acordados con Ubiquando. Su implementación está hecha sobre Mondrian, y con el uso de su interfaz gráfica es posible ver estos reportes y analizar la información con tablas de datos o gráficas de diversos tipos (barras, pies, líneas, etc). Para este análisis de información se dan diferentes posibilidades de navegación, como el drill up y drill down. Además es posible analizar solo algunas dimensiones, o incluir a varias para un reporte. También es posible restringir en un análisis a determinados miembros de una dimensión que sean del interés del análisis, en vez de incluir a todos. Para conocer más detalles de la forma de utilizar el análisis OLAP Mondrian ver anexo “Manual de administrador”. En las siguientes secciones se documentan estos reportes en forma gráfica, aunque en la herramienta también se muestra la tabla de resultados de los datos. Se incluye también el query MDX necesario para realizar los reportes. Es importante notar que no es necesario escribir un query MDX para navegar por el cubo OLAP. Esta navegación puede ser hecha de forma sencilla e interactiva con el usuario usando solo el mouse, seleccionando las opciones que se quieren (ver anexo Manual de administrador). Además de los reportes acordados con Ubiquando es posible realizar muchos más, haciendo uso de las características de Mondrian y de las dimensiones implementadas. Se mostrará un solo reporte por página para dar claridad al documento. 67 10.1 VENTAS POR PRODUCTOS La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY {[Measures].[Valor]} ON columns, NON EMPTY Hierarchize(Union({[Producto].[All Productos]}, [Producto].[All Productos].Children)) ON rows from [cuboVentas] Figura 18. Consulta MDX Ventas por productos Figura 19. Resultados gráficos del reporte Ventas por productos Esta consulta permite explorar el valor de las ventas de Ubiquando, discriminando estas ventas por sus líneas de productos. Al hacer drill down se exploran las ventas por productos individuales. En esta consulta la medida es el valor de la venta en la columna y los productos en las filas. 68 10.2 VENTAS POR CLIENTE La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY {[Measures].[Valor]} ON columns, NON EMPTY Hierarchize(Union({[Segmento].[All Segmentos]}, [Segmento].[All Segmentos].Children)) ON rows from [cuboVentas] Figura 20. Consulta MDX Ventas por cliente Figura 21. Resultados gráficos del reporte Ventas por cliente Esta consulta permite explorar el valor de las ventas de Ubiquando, discriminando estas ventas por sus sectores de clientes. Al hacer drill down se exploran las ventas por clientes individuales. En esta consulta la medida es el valor de la venta en la columna y los clientes en las filas. 69 10.3 VENTAS POR TIEMPOS La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY {[Measures].[Valor]} ON columns, NON EMPTY {[Tiempo].[All Tiempos]} ON rows from [cuboVentas] Figura 22. Consulta MDX Ventas por tiempos Figura 23. Resultados gráficos del reporte Ventas por tiempos Esta consulta permite explorar el valor de las ventas de Ubiquando, discriminando estas ventas por las fechas de venta. Al hacer drill down se limita más el criterio del reporte, permitiendo analizar las ventas por año, semestre, trimestre y día. En esta consulta la medida es el valor de la venta en la columna y los tiempos en las filas. 70 10.4 VENTAS DE PRODUCTOS POR CLIENTE La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY Crossjoin(Hierarchize(Union({[Producto].[All Productos]}, [Producto].[All Productos].Children)), {[Measures].[Valor]}) ON columns, NON EMPTY Hierarchize(Union({[Segmento].[All Segmentos]}, [Segmento].[All Segmentos].Children)) ON rows from [cuboVentas] Figura 24. Consulta MDX Ventas de productos por cliente Figura 25. Resultados gráficos del reporte Ventas de productos por cliente Se Compara el cruce de la dimensión Producto y la dimensión Cliente (con medida valor, las medidas en mondrian son vistas como una dimensión aparte, que se llama [Measures]). 71 10.5 VENTAS POR PRODUCTOS EN EL TIEMPO La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY {([Tiempo].[All Tiempos], [Measures].[Valor])} ON columns, NON EMPTY Hierarchize(Union({[Producto].[All Productos]}, [Producto].[All Productos].Children)) ON rows from [cuboVentas] Figura 26. Consulta MDX Ventas por productos en el tiempo Figura 27. Resultados gráficos del reporte Ventas por productos en el tiempo Con esta consulta que utiliza las propiedades “children” y “Crossjoin” descritas en el numeral 1.4, se permite analizar las ventas de las líneas de producto y los productos específicamente en los tiempos requeridos por el usuario. Es posible analizar a todos los productos en el tiempo que varía en año, semestre, trimestre y día. También se explora el interior de cada línea de producto o por producto individual en estas secciones de tiempo. Esta consulta se compone del valor en la columna y de las dimensiones producto y tiempo en las filas. 72 10.6 VENTAS POR CLIENTE EN EL TIEMPO La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY {([Tiempo].[All Tiempos], [Measures].[Valor])} ON columns, NON EMPTY Hierarchize(Union({[Segmento].[All Segmentos]}, [Segmento].[All Segmentos].Children)) ON rows from [cuboVentas] Figura 28. Consulta MDX Ventas por cliente en el tiempo Figura 29. Resultados gráficos del reporte Ventas por cliente en el tiempo Con esta consulta que utiliza las propiedades se permite analizar las ventas a los segmentos de cliente y los clientes específicamente en los tiempos requeridos por el usuario. Es posible analizar las ventas a todos los clientes en el tiempo que varía en año, semestre, trimestre y día. También se explora el interior de cada segmento de cliente o por cliente individual en estas secciones de tiempo. Esta consulta contiene el valor en la columna y la dimensión cliente y tiempo en las filas. 73 10.7 VENTAS POR CLIENTE Y PRODUCTO EN EL TIEMPO La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY {([Tiempo].[All Tiempos], [Measures].[Valor])} ON columns, NON EMPTY Hierarchize(Crossjoin({[Producto].[All Productos]}, Union({[Segmento].[All Segmentos]}, [Segmento].[All Segmentos].Children))) ON rows from [cuboVentas] Figura 30. Consulta MDX Ventas por cliente y producto en el tiempo Figura 31. Resultados gráficos del reporte Ventas por cliente y producto en el tiempo La consulta comprende una unión entre las dimensiones sector, producto y tiempo del cubo para dar respuesta a una consulta de tipo ventas por cliente y producto vendido en esa venta en cierto segmento del tiempo. Es posible analizar las ventas de cierta línea de productos o de un producto a un segmento de clientes o a un cliente específico en un año, semestre, trimestre o día determinado. Esta consulta se compone de las dimensiones producto y cliente en las filas y tiempo y valor en las columnas. 74 10.8 VENTAS POR CIUDAD La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY {[Measures].[Valor]} ON columns, NON EMPTY {[Ciudad].[All Ciudads]} ON rows from [cuboVentas] Figura 32. Consulta MDX Ventas por ciudad Figura 33. Resultados gráficos del reporte Ventas por ciudad Esta consulta permite ver el valor de las ventas en las diferentes ciudades donde Ubiquando tiene clientes. Esta consulta se compone de las dimensiones geografía en las filas y valor en las columnas. 75 10.9 VENTAS POR PRODUCTOS EN CIUDADES La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY Crossjoin(Hierarchize(Union({[Producto].[All Productos]}, [Producto].[All Productos].Children)), {[Measures].[Valor]}) ON columns, NON EMPTY Hierarchize(Union({[Ciudad].[All Ciudads]}, [Ciudad].[All Ciudads].Children)) ON rows from [cuboVentas] Figura 34. Consulta MDX Ventas por productos en ciudades Figura 35. Resultados gráficos del reporte Ventas por productos en ciudades Esta consulta permite ver el valor de las ventas correspondiente a cada línea de producto o a cada producto individual (al hacer drill down) por cada ciudad. Esta consulta se compone de las dimensiones geografía en las filas y producto y valor en las columnas. 76 10.10 VENTAS POR CIUDAD EN EL TIEMPO La consulta MDX que soporta este reporte es la siguiente: select NON EMPTY Crossjoin(Hierarchize(Union({[Tiempo].[All Tiempos]}, [Tiempo].[All Tiempos].Children)), {[Measures].[Valor]}) ON columns, NON EMPTY Hierarchize(Union({[Ciudad].[All Ciudads]}, [Ciudad].[All Ciudads].Children)) ON rows from [cuboVentas] Figura 36. Consulta MDX Ventas por ciudad en el tiempo Figura 37. Resultados gráficos del reporte Ventas por ciudad en el tiempo Esta consulta permite ver el valor de las ventas en las ciudades en los diferentes instantes de tiempo. Esta consulta se compone de las dimensiones geografía en las filas y tiempo y valor en las columnas. 77 9. MANTENIMIENTO Y CRECIMIENTO DEL DATAMART Luego de pasar exitosamente la etapa de pruebas de todo proyecto de software y ser aceptado por el cliente final, el DWH está actualmente en producción. Los directivos de la empresa lo recibieron con mucho entusiasmo y satisfacción. Tanto ellos como el grupo del desarrollo del proyecto están convencidos de haber hecho un producto de excelente calidad, pues se rigió por una metodología especializada para la materia, que siguiéndose con prudencia iba a garantizar el éxito del proyecto. También se realizó una capacitación en el uso del producto, confirmando la aceptación y acogida que tuvo el proyecto. Esta capacitación fue rápida, pues Jpivot-Mondrian es muy fácil y orientada al usuario, característica fundamental que permitió facilitar el trabajo. En cuanto al mantenimiento y crecimiento de la bodega, se puede decir que se harán actualizaciones semanales, condición impuesta por los ejecutivos de la empresa, para mantener datos al día y disponibles para cualquier momento que se necesiten. En cuanto al crecimiento, la tabla que crecería con mayor incremento es la tabla de fact_venta de la bodega de datos. No existe ningún riesgo que estos datos se pierdan o entren en conflicto en la aplicación, la base de datos PostgreSQL garantiza que soporta la cantidad de información que puede ser generada por la empresa en los negocios que se enfrentaran mas adelante. 78 CONCLUSIONES • El data warehouse es mucho más que un producto. Es una serie de productos relacionados entre sí que por medio de procesos bien definidos producen información útil para los usuarios. Para que una solución de este tipo realmente tenga éxito, los usuarios deben aprovechar esta información y ejecutar decisiones y acciones basadas en el conocimiento adquirido. • Para que un proyecto de data warehousing tenga éxito es necesario que exista una cultura de información en la organización. Si las decisiones son tomadas basadas en intuiciones y suposiciones y no hay disposición al cambio, un proyecto de data warehouse está destinado a fracasar en la organización. • El desarrollo óptimo del proceso de implementación del data warehouse se encuentra estrechamente relacionado con la existencia de patrocinadores dentro de la organización. Si no se cuenta con patrocinadores en el área del negocio y en el área técnica es preferible posponer un proyecto. • Es esencial el manejo de roles en el equipo de desarrollo de un proyecto de data warehouse, de esta manera hay fluidez y especialización en los miembros del equipo que implica una mayor eficiencia y calidad del trabajo. • El proceso con más dificultades en un proyecto de data warehouse es el de recolección de requerimientos y análisis de los sistemas fuente. En las empresas existe un alto volumen de inconsistencias en los datos y falta de documentación de sus sistemas de información. • Un datamart permite servir a un área del negocio como lo haría una bodega a varias áreas. La especialización del datamart tiene un enfoque hacia la necesidad de un área específica, que facilita la definición de la granularidad de los datos utilizados y sus dimensiones. • El uso de software libre en inteligencia de negocios tiene la ventaja de ser desarrollado a la medida de las necesidades de una organización. Por lo tanto ofrece un análisis más personalizado y con menores restricciones que el llevado a cabo con herramientas comerciales, a las cuales se debe ajustar el negocio. Con el software libre, la solución es la que se ajusta al negocio. • Dada la madurez y fortaleza de las herramientas libres utilizadas en este proyecto, se llega a competir en iguales condiciones en términos de funcionalidad, rendimiento y fortaleza con las herramientas comerciales tradicionales del data warehousing. 79 • Aunque existe una documentación limitada de las herramientas de software libre, existen foros mundiales sobre estas herramientas compuestos por personas de la comunidad libre, que dan soporte efectivo a desarrolladores y usuarios de estas herramientas. • La estructura de una base de datos de inteligencia de negocios es esencial para el éxito de un proyecto de este tipo. Aunque la estructura de entidad – relación funciona correctamente para almacenar datos operativos, es totalmente impropia para estas soluciones. Se debe seleccionar ya sea un modelo en estrella o copo de nieve para un data warehouse dependiendo de las necesidades del negocio. Este modelo es utilizado dado que refleja las necesidades de un negocio en términos de soporte a toma de decisiones. • El análisis OLAP es adecuado para el análisis de una bodega de datos, dado que permite relacionar a una o varias medidas con atributos vistos como dimensiones, analizando los aspectos importantes y determinantes para el éxito de un negocio. • El análisis OLAP realizado con Mondrian es similar al realizado con herramientas comerciales del mismo tipo, ofreciendo la misma funcionalidad y rendimiento. Aunque la construcción y definición de dimensiones y cubos requiere conocimientos técnicos más avanzados que con las otras herramientas, una vez implementados, la facilidad de uso para el usuario es evidente. • Más que una solución para reducir costos, el data warehouse debe ser visto como una solución para incrementar ingresos y ventas. Sus resultados se perciben como beneficios económicos para una empresa en términos de mediano y largo plazo. • Dada la proximidad del tratado de libre comercio, negociado actualmente por Colombia, es necesario el uso de la inteligencia de negocios para aprovechar nuevos mercados y fortalecer la posición ocupada en el mercado actual por las empresas colombianas. El uso de estas herramientas mejorará la competitividad de las empresas y las hará más eficientes. • Las pymes, tradicionalmente alejadas de soluciones tecnológicas por sus altos costos, se acercan cada vez más a una competencia “de igual a igual” con grandes empresas “inteligentes”, dada la disminución de costos en hardware y a la implantación de soluciones de software libre como la de este proyecto. • El presupuesto de las empresas para su área tecnológica se encuentra en crecimiento cada año, por lo que existe un mercado potencial para soluciones de inteligencia de negocios. 80 RECOMENDACIONES • En un proyecto de data warehouse se deben confrontar los requerimientos del negocio con el área técnica, para determinar si existen las fuentes de datos para dar soporte a los requerimientos planteados. De esta forma no ofrecer reportes imposibles de cumplir en el proyecto. • Un data warehouse es tan confiable como sus datos fuentes. Por lo tanto, se debe determinar la confiabilidad y disponibilidad de estos datos, y si existe un mismo dato en diversas fuentes, extraerlo de la fuente que sea más confiable. • Al iniciar un proyecto de data warehouse se deben identificar y mantener sponsors del proyecto al interior de la organización. Si no se identifican, es mejor posponerlo o buscar el apoyo. • Se deben identificar justificadores del negocio al iniciar un proyecto de data warehouse, esto es justificar el proyecto desde un punto de vista financiero con un retorno sobre la inversión. De esta manera aumentará el entusiasmo hacia el proyecto de la organización. • En Colombia hay miles de pymes, todas ellas son un cliente potencial para esta solución. Por lo tanto se deben aprovechar sus necesidades de información y el bajo costo de esta solución para cubrir este mercado. 81 GLOSARIO DWH: Por el inglés Data warehouse. Es una bodega de datos. Datamart: subconjunto especializado de una bodega de datos. Los diferentes datamarts contienen diferentes combinaciones y selección de los mismos datos detallados identificados en la bodega de datos, por esto puede decirse que los datamarts vienen a ser como una extensión natural de la bodega de datos. JDBC: Java Database Connectivity, API de Java que permite hacer conexiones a bases de datos para manipular la información que están contienen. Metadata: Información sobre los datos almacenados en la bodega de datos, permite conocer las fuentes de donde es extraído y reglas de negocio. OLAP: ON LINE ANALYTICAL PROCESSING, tecnología que permite a los usuarios tener una visión de los datos de una forma rápida, interactiva y fácil de usar. OLTP: ON LINE TRANSACTIONAL PROCESSING, las aplicaciones de OLTP están organizadas para ejecutar las transacciones para los cuales fueron hechos, como por ejemplo: mover dinero entre cuentas, un cargo o abono, una devolución de inventario, etc. Por otro lado, una bodega de datos está organizada en base a conceptos, como por ejemplo: clientes, facturas, productos, etc. Query: Consultas sobre una base de datos o sobre una bodega de datos. Permiten manipular la información de las bases de datos y las bodegas. RDBMS: Manejador de bases de datos relacional. Constituyen la base para los sistemas OLTP. Sistemas Legacy: Sistemas fuente de la empresa con los que manejan la operación de las transacciones diarias. Su característica principal es el enfoque en los procesos de operación diaria de la empresa. 82 BIBLIOGRAFÍA [1] Ralph Kimball, 1996. The Data Warehouse Toolkit. Wiley. [2] Ralph Kimball, 1998. The Data Warehous Lifecycle Toolkit. Wiley. [3] Barry Devlin, 1997. Data Warehouse from architecture to implementation. Addison Wesley. [4] IBM Learning Services, 2002. Fundamentals of Data Warehouse and Business Intelligence for Knowledge Management. IBM Global Services Group. [5] Richard Connelly, Robin McNeill, Roland Multidimensional Manager. Cognos Incorporated. Mosimann, 1997. The [6] Corinne Baragoin, Jorge Bercianos, Janez Komel, Gary Robinson, Richard Sawa, Erik Schuinder, 2001. OLAP Server Theory and Practices. IBM Red Books. [7] IBM Learning Services. Business Intelligence Tutorial. IBM Corporation. [8] Jiawei Han, Micheline Kamber, 2001. Data Mining: Concepts and Techniques. Morgan Kaufmann Publishers. [9] Julian Hyde, Paul Dymecki, Sean McCullough, Andreas Voss, 2003. What is Mondrian? (online). Mondrian Project. http://mondrian.sourceforge.net/. [10] PostgreSQL Global Development Group, 2005. PostreSQL 8.0.3 Documentation. PostgreSQL Global Development Group. [11] William H. Inmon, 1996. Building the Data Warehouse.Wiley. [12] Liza Andrea Rojas Rojas, 2003. Diseño de un prototipo de bodega de datos para un modelo de empresa de ventas y aplicación de herramientas OLAP. Trabajo de grado (Ingeniero de Sistemas). Universidad Nacional de Colombia. Facultad de Ingeniería. Departamento de Ingeniería de Sistemas. [13] Alexandra Pomares, 2004. Business Intelligence. Universidad Javeriana. [14] Kimball Group. About Kimball Group (online). http://www.kimballgroup.com/html/about.html. 83 ANEXOS ANEXO 1. MANUAL DE ADMINISTRADOR Datamart Ventas Http://pegasus.javeriana.edu.co/~infempre Datamart Ventas Ubiquando Manual Administrador Tabla de Contenido 1 Propósito y Alcance 1 2 Conceptos Basicos Sobre Consultas OLAP 2 2.1 EL MODELO DIMENSIONAL EN ESTRELLA. 2 2.2 DEFINICIÓN DE UN CUBO EN XML 3 2.3 ANÁLISIS MULTIDIMENSIONAL 4 2.4 MDX 12 3 Herramientas para el datamart 18 3.1 JAKARTA-TOMCAT 18 3.2 POSTGRESQL 20 4 Scripts de carga a la base de datos 22 5 Quienes Pueden Usar La Herramienta? 28 6 Navegando En El Datamart 29 Manual Administrador Versión 1.0 1. PROPÓSITO Y ALCANCE El propósito de este documento es describir los conceptos básicos y avanzados del datamart ventas así como sus funcionalidades. Esta dirigido al usuario administrador describiendo características de los lenguajes MDX y de las herramientas de software pre-instaladas para el funcionamiento del datamart. El documento esta limitado a todo lo descrito en la fase de requerimientos del proyecto. 1 2. CONCEPTOS BÁSICOS SOBRE CONSULTAS OLAP En este capítulo se verá la teoría detrás del datamart. Este datamart no es una herramienta de reporteo común, se basa en tecnología OLAP para realizar consultas multidimensionales, así que es una herramienta orientada al análisis de datos. Comenzaremos por la capa más baja, que es la de base de datos. Una bodega de datos debe estar orientada al análisis, no al almacenamiento transaccional de los datos. Existen básicamente dos tipos de almacenamientos multidimensionales, y son el M-OLAP y el R-OLAP. El primero se basa en motores de bases de datos especializados para almacenar sus datos en estructuras dimensionales, el segundo se basa en los motores de bases de datos Relacionales comunes. Este segundo modelo es en el que se basa Mondrian, la herramienta implementada en el datamart. 2.1 EL MODELO DIMENSIONAL EN ESTRELLA. Este modelo, es conocido como R-OLAP star schema. R-OLAP por ser utilizado por el análisis OLAP soportado sobre bases de datos Relacionales, de ahí la "R". El modelo propiamente se conoce como estrella, araña o copo de nieve. Este modelo está específicamente diseñado para basarse en el la construcción de hipercubos o cubos de decisión, donde se tiene una serie de dimensiones , temas que interesan a la organización, y todas estas dimensiones rodeando tablas de hechos que son las que registran todos los movimientos o transacciones sobre las cuales se quiere hacer el análisis. Figura 1. Generalidades del modelo estrella 2 Las generalidades del modelo son como se muestra en la figura 1, donde se observa que debe existir una tabla de hechos rodeada por las dimensiones asociadas. En las bases de datos que adoptan este modelo, se puede tener una o más estrellas, dependiendo de los hechos que se quieran registrar en las tablas de hechos. La tabla de hechos o "fact table" como se conoce comúnmente, debe tener una estructura que se divide en dos partes: • La primera de ellas debe contener las llaves foráneas que van a relacionar a las dimensiones. Es decir, que por cada dimensión que exista asociada a una tabla de hechos, debe aparecer una llave foránea a dicha dimensión. Esto permite que al momento de utilizar los hipercubos se involucre información contenida en los atributos de las dimensiones que no estén almacenados en la tabla de hechos. • Después de los campos que tienen las llaves foráneas a las dimensiones, deben aparecer los campos que almacenan la información concreta del registro y particular al problema, y que permiten hacer las sumarizaciones que se requieran en la aplicación. Esto es lo que en el lenguaje de hipercubos se conoce como las Medidas o los Indicadores. Las medidas como su nombre lo indica son las que miden una determinada variable de estudio, y por lo general son cantidades de cosas (cantidades de ventas, de dinero, etc.). La medida utilizada en este proyecto que permite analizar las ventas de Ubiquando, es el valor de venta en pesos. También pueden ser fechas, o en fin, cualquier atributo que sea comparable y medible, y que proporcione información valiosa al realizar los análisis requeridos del negocio. Sin unos buenos indicadores, los resultados de las herramientas de acceso a datos no van a ser muy eficientes. Una vez analizada la tabla de hechos, se continúa con las dimensiones. Cada una de las dimensiones es un tema, que debe tener una llave asociada en la tabla de hechos. Estas dimensiones guardan información en sus atributos que solo le atañe a ella, que no es necesario que deba ir incluida en la tabla de hechos. 2.2 DEFINICIÓN DE UN CUBO EN XML Mondrian utiliza un esquema propio para la generación de los hipercubos, y es en un archivo de extensión .xml. En este archivo se establece el modelo lógico, es decir, las dimensiones, jerarquías, medidas y niveles del cubo, así como el modelo físico, o la relación con la base de datos que soporta dicho modelo. Típicamente es el modelo de estrella, descrito en este documento. 3 La sintaxis para crear un cubo en xml es bastante intuitiva y organizada. A continuación se muestra un esquema xml sencillo para el ejemplo incluido en Mondrian, de una tienda de alimentos: < Schema> < Cube name="Sales"> < Table name="sales_fact_1997"/> < Dimension name="Gender" foreignKey="customer_id"> < Hierarchy hasAll="true" allMemberName="All Genders" primaryKey="customer_id"> < Table name="customer"/> < Level name="Gender" column="gender" uniqueMembers="true"/> < /Hierarchy> < /Dimension> < Dimension name="Time" foreignKey="time_id"> < Hierarchy hasAll="false" primaryKey="time_id"> < Table name="time_by_day"/> < Level name="Year" column="the_year" type="Numeric" uniqueMembers="true"/> < Level name="Quarter" column="quarter" uniqueMembers="false"/> < Level name="Month" column="month_of_year" uniqueMembers="false"/> < /Hierarchy> < /Dimension> < Measure name="Unit Sales" column="unit_sales" aggregator="sum" formatString="#,###"/> < Measure name="Store Sales" column="store_sales"aggregator="sum" formatString="#,#"/> < /Cube> </ Schema> Figura 2. Esquema de cubo XML Este esquema contiene un cubo sencillo, llamado "Sales", o ventas. El cubo tiene 2 dimensiones, que son tiempo y género, y 2 medidas, que son unidades vendidas y valor de dichas unidades vendidas. Con este esquema ya se puede construir una consulta MDX como: select {[Measures].[Unit Sales], [Measures].[Store Sales]} on columns, {[Time].[1997].[Q1].descendants} on rows from [Sales] where [Gender].[F] 2.3 ANÁLISIS MULTIDIMENSIONAL El análisis multidimensional utilizado en este proyecto se basa en los siguientes conceptos básicos. • Cubo Multidimensional. Es una estructura de almacenamiento que permite realizar las diferentes y posibles combinaciones para visualizar los resultados de una organización hasta un determinado grado de detalle. Esta estructura es independiente del sistema transaccional de la organización y facilita consultar información histórica de manera rápida y eficiente; ofreciendo la posibilidad de navegar y analizar los datos requeridos. Cabe 4 recordar que el modelo de estrella es el que sopota este modelo de cubos multidimensionales. • Medidas. Son características cualitativas o cuantitativas de los objetos que se desean analizar en el negocio, es decir los temas. Las medidas cuantitativas están dadas por valores o cifras porcentuales. Lo que se puede medir se puede controlar y mejorar . Por ejemplo, se tienen las ventas en dólares, el número de unidades de inventario, las horas trabajadas, el promedio de piezas producidas, el porcentaje de aceptación de un producto, el consumo de combustible de un vehículo, etc. Hay muchos ejemplos de medidas, pero la definición de las mismas corresponde a cada hipercubo en particular, es decir, del problema que se desee resolver. • Dimensión. Son los objetos del negocio, con los cuales se puede analizar la tendencia y el comportamiento del mismo. La definición de estas dimensiones, se basa en políticas de la compañía o del mercado. Depende del modo como se interpreta o clasifica su información, para segmentar el análisis en sectores que por sus características comunes facilitan la observación y el análisis. Para poder definir las dimensiones requeridas dentro de los cubos multidimensionales, se deben responder a las siguientes preguntas: ¿Cuando? : Permite hacer un análisis a través del tiempo y visualizar de manera comparativa el desempeño del negocio por unidades de tiempo que van desde días hasta años. ¿Donde? : Se centra en un área física o imaginaria donde se están llevando a cabo los movimientos que se desean analizar, estos lugares pueden ser zonas geográficas, bodegas de almacenamiento de mercancía, divisiones hacia el interior de la organización, centros de costo, clasificación de las cuentas contables y etc. ¿Que?: Es el objeto del negocio, o es el objeto de interés para determinada área de la compañía. ¿Quien?: En esta dimensión se plantea una estructura de los elementos que inciden directamente sobre el objeto de interés, en estos casos se hace referencia a el área comercial o de ventas, a los empleados de la organización cuando se esta realizando un análisis a nivel del talento Humano y etc. ¿Cual? : Es hacia donde esta enfocado el esfuerzo de la organización o una determinada área del negocio, para hacer llegar los productos o servicios. En esta dimensión se trabaja con los clientes que pueden ser internos o externos a la organización. 2.3.1 Los Cubos De Decisión Al contar con estos componentes del análisis multidimensional, se inicia el proceso de determinar los cubos que reflejen las necesidades del negocio. 5 CUANDO DONDE QUE QUIEN CUAL MEDIDAS año zona tipo de producto fuerza de ventas división de clientes ventas semestre región grupo de producto categoría tipo de cliente unidades trimestre ciudad producto vendedor cliente horas Tabla 1. Ejemplos de dimensiones. Un cubo de decisión es el resultado lógico del proceso de modelamiento en estrella. En el caso del manejo relacional de bases de datos, los cubos pueden estar organizados físicamente en motores de bases de datos que soporten esta multidimensionalidad. De esta manera un cubo se convierte en una abstracción multidimensional de los datos contenidos en un esquema relacional. En un cubo están relacionados varios conceptos vistos en la sección anterior, pero los conceptos que básicamente componen un cubo son las dimensiones, las medidas, las jerarquías y los miembros. Otros conceptos determinantes en el análisis multidimensional son las celdas, los niveles, las tuplas y los grupos o sets, que son elementos que agregan complejidad y funcionalidad a uno de estos cubos. Intentar separar estos conceptos e intentar explicarlos por separado es una tarea muy difícil pues se encuentran estrechamente relacionados entre sí. Para enunciar y explicar de manera adecuada estos elementos se da un ejemplo. Los elementos fundamentales de un cubo son las dimensiones y las medidas. En la Tabla 2 aparecen dos dimensiones. La dimensión tiempo y la dimensión producto. Para este cubo que consta de dos dimensiones existe una medida, que es el número de unidades vendidas. Es decir que cada una de las celdas contiene el valor de una medida que es la intersección de dos miembros de la dimensión. La dimensión producto tiene cuatro miembros, que son: carnes, vegetales, cereales y leche. La dimensión tiempo tiene cuatro miembros también, que son los meses de abril a julio. Es decir que la información contenida en este cubo habla de las unidades vendidas de cada producto en cada mes. Los valores de la medida unidades vendidas aparecen en una celda, que representa la intersección entre dos dimensiones. Unidades Vendidas tiempo abril mayo junio Producto carnes 23 34 43 vegetales 17 43 65 cereales 34 14 21 leche 67 31 19 6 Unidades Vendidas julio 23 47 34 12 Tabla 2. Cubo de dos dimensiones y una medida Por supuesto, podemos dar vuelta a las filas para que queden en las columnas y viceversa, y el sentido de los datos es el mismo, como lo muestra la tabla 3. Unidades Vendidas Tiempo abril 23 17 34 67 Producto carnes vegetales cereales leche mayo 34 43 14 31 junio 43 65 21 19 julio 23 47 34 12 Tabla 3. Cubo de dos dimensiones y una medida con dimensiones cambiadas. Claramente, cada celda puede ser descrita en términos de un miembro de cada dimensión. En ambas visualizaciones del cubo se pueden ver el número de unidades de cereales vendidas en el mes de mayo. Es muy fácil visualizar y analizar un cubo como estos, que consiste en dos dimensiones y una medida. Sin embargo, no hay razón para que un cubo como estos deba estar limitado a una sola medida. También se podría tener una nueva medida, la medida "pesos vendidos". Hay muchas formas de visualizar ésta medida y la medida de unidades vendidas. Podría representarse bien como en la tabla 4. Unidades Vendidas/pesos vendidos tiempo abril mayo junio julio Producto carnes 23 $5000 34 $2500 43 $4250 23 $2355 vegetales 17 $3000 43 $3900 65 $5000 47 $6562 cereales 34 $2500 14 $3100 21 $1500 34 $3287 leche 67 $6000 31 $2000 19 $5300 12 $2345 Tabla 4. Cubo de dos dimensiones y dos medidas En este caso las unidades vendidas ocupan la parte izquierda de la celda y los pesos vendidos la parte derecha. Así como los cubos pueden tener múltiples medidas, también pueden tener más de dos dimensiones. Si al negocio de este ejemplo, se le agrega que la compañía que vende estos productos tiene sedes en distintos lugares, aparecería una nueva dimensión. Es posible ver la información anterior, ahora discriminada por dichos lugares. Se le agrega la dimensión ciudad y se obtiene el cubo de la figura 3. 7 Figura 3. Cubo dimensional de tiempo, producto y ciudad. La celda que está en verde en el cubo muestra una intersección entre tres aristas del cubo.Cada arista representa una dimensión. La celda seleccionada es pues una intersección de el mes de mayo, de el producto vegetales y de la ciudad Bogotá. El valor que se encuentra dentro de la celda es el número de unidades de vegetales vendidos en mayo en bogota. De esta manera los datos ahora se analizan en tres dimensiones. Sin embargo, gracias a OLAP no hay límite de dimensiones para el análisis de datos. Por lo tanto, un cubo multidimensional podría tener muchas más dimensiones que las expuestas en el anterior ejemplo. Para complementar ese cubo tridimensional se podría agregar la dimensión empleado, para saber que empleado vendió el producto, y también agregar la dimensión cliente, para saber a que persona se le han vendido cuantos productos. De esta manera el cubo ahora tendría cinco dimensiones. De este cubo, se puede obtener una aseveración como esta: "pedro vendió 10 cajas de cereal en mayo en la ciudad de bogota a la cliente María, que le costaron $35000 pesos". Para conocer esto se han usado las 5 dimensiones definidas, así como las dos medidas. Hasta este punto se ha expuesto la relación de los conceptos básicos de análisis multidimensional, como dimensiones, medidas, miembros y celdas. Pero la complejidad de los conceptos va en aumento, y se agregan los siguientes elementos: 8 Jerarquías Y Agregaciones. Las dimensiones vistas proveen una análisis significativo para los datos. Sin embargo han sido dimensiones estáticas, que no permiten variar su forma. Si se pretendiera analizar los datos por día, por mes, por trimestre, o por año no se justificaría hacer un cubo diferente para cada restricción. Para hacerlo eficiente, se usan dimensiones con jerarquías. Una dimensión puede estar organizada jerárquicamente. Por ejemplo, muchos cubos tienen una dimensión tiempo que normalmente es jerárquica, y que incluye un año, semestre, trimestre, mes y día. Un ejemplo de esta dimensión ocurre cuando se quieren ver las unidades vendidas de un producto en determinada ciudad discriminadas por año, mes, trimestre y día. Estas vistas son las tablas 5, 6 y 7. Unidades Vendidas tiempo año 2001 2002 2003 2004 producto carnes 232 343 432 234 vegetales 173 432 656 472 cereales 344 145 215 345 leche 675 318 193 128 cereales 145 144 169 198 leche 123 113 105 102 cereales 34 14 21 34 leche 67 31 19 12 Tabla 5. Resultados por año Unidades Vendidas tiempo trimestre trim 1 trim 2 trim 3 trim 4 producto carnes 101 122 176 138 vegetales 172 165 128 126 Tabla 6. Resultados por trimestre Unidades Vendidas tiempo mes abril mayo junio julio producto carnes 23 34 43 23 vegetales 17 43 65 47 Tabla 7. Resultados por mes. Todas estas tablas se refieren a la dimensión tiempo, y se relacionan entre sí, dado que un mes está contenido en un trimestre, y este a su vez está contenido en un año. Están organizados lógicamente de manera jerárquica. 9 Los resultados de los datos con estas restricciones se pueden representar como aparecen en la tabla 8. Este tipo de representaciones que se encuentran al interior de un cubo, son el resultado de sumar o hacer agregaciones de los datos originalmente guardados en la base de datos. Es decir, el resultado por trimestre surge de sumar los resultados de los tres meses que conforman el trimestre. Esto es lo que se conoce como una agregación. El termino agregación no es propiamente un concepto del análisis multidimensional. Surge de la necesidad de optimizar los tiempos de respuesta a los clientes o usuarios, y en él vienen involucrados conceptos de almacenar y cargar datos temporalmente en la memoria. 2000 trim 3 2000 trim 3 total trim 4 trim 4 total 2000 total julio agosto septiembre octubre noviembre diciembre carnes 17 16 12 45 27 24 21 72 242 leche 22 18 19 59 19 19 12 50 199 Tabla 8. Resultados anteriores vistos de una forma más compleja Las jerarquías están compuestas por niveles, que se exponen a continuación. Niveles. Siguiendo con el ejemplo de la dimensión tiempo, la jerarquía de esta dimensión podría ser como se ve en la figura 4. Figura 4. Niveles de la jerarquía tiempo. 10 En la figura 4, se incluye por cuestiones de visibilidad solo parte de la jerarquía. En este ejemplo de observa claramente que la jerarquía de la dimensión tiempo tiene 4 niveles, que son: el nivel "all", el año, el trimestre y el mes. Además de los niveles propios de una fecha, que son: el año, el trimestre y el mes, se incluye el nivel all, que es la raíz de este árbol jerárquico. El nivel all está creado específicamente para poder manejar y tener acceso a toda la información de tiempo contenida dentro del cubo, para producir respuestas a preguntas como : ¿cual es el número de unidades vendidas de algún producto para todo el periodo de tiempo cubierto por el cubo?. Muchas de las dimensiones existentes poseen un nivel superior "all". Los niveles tienen miembros, y un miembro es un ítem simple en una dimensión. Se podría formar un cubo con cada uno de estos niveles y la dimensión tiempo, y todos serían miembros. El nivel año tiene 2 miembros, el nivel trimestre tiene 8 miembros, y así sucesivamente. Tuplas Y Sets. Un set es un conjunto o un grupo. Pero para efectos del análisis multidimensional se considera tal cual como se maneja en el ambiente multidimensional. Tuplas. Dada la figura 3 descrita anteriormente, se analiza la celda seleccionada, identificada con color verde. Esta selección se representa con la siguiente notación: " [productos].[vegetales], [tiempo].[mayo], [ciudad].[bogota] " En esta notación, se tiene la intersección especificada en función de las tres dimensiones y sus miembros respectivos. Primero está la dimensión producto, donde el miembro al que se hace referencia es vegetales, y de esta forma se representan las demás dimensiones, separadas por comas. En este orden se hace referencia a la celda seleccionada en el caso del ejemplo. Es independiente el orden en el que se coloquen las dimensiones. La celda descrita también se podría representar de esta manera: " [productos].[vegetales], [ciudad].[bogota], [tiempo].[mayo] ". Lo importante es utilizar las coordenadas dentro del cubo para hacer la selección requerida. Las coordenadas son miembros, un miembro tomado de cada dimensión. Por lo tanto, se llega a la definición que este conjunto de coordenadas es lo que se conoce como una tupla que es única en la matriz multidimensional. 11 Figura 5. Expresión multidimensional vista gráficamente. Sets. Un set es una colección simple de tuplas, o un conjunto de tuplas, las cuales son definidas usando las mismas dimensiones. El uso de las mismas dimensiones se ve en esta expresión: ( [productos].[vegetales], [ciudad].[bogota], [tiempo].[mayo] ) ( [productos].[carnes], [ciudad].[bogota], [tiempo].[mayo] ) Estas dos tuplas toman cada una exactamente un miembro de cada una de las dimensiones, y ambas son definidas usando las mismas dimensiones. Es decir que si se unen en una expresión, se convertirían en un set. Podemos decir que estas tuplas tienen la misma "dimensionalidad". Por lo tanto se complementa la definición de set, estableciendo que es una colección de tuplas con la misma dimensionalidad. Puede tener varias tuplas, una tupla, o ninguna tupla, en cuyo caso sería un set vacío. 2.4 MDX Definición Básica Del Lenguaje Mdx. Hasta ahora se ha usado una notación para referirse a un miembro en una dimensión. Se había dicho que primero se colocaba la dimensión, entre [ ], se separaban por un punto y se escribía el miembro entre otros [ ]. Todo esto pertenece a un lenguaje llamado MDX. Las siglas MDX significan Multi Dimensional eXpressions. Es un lenguaje que sirve para hacer consultas en una base de datos multidimensional, análogamente a como lo haría el lenguaje SQL en las bases de datos comunes. Es la forma de expresar el análisis de un cubo OLAP. 12 Desde que la empresa Microsoft entro al mundo de la Inteligencia de negocios, en el año de 1998, con una versión de servicios OLAP en la aplicación SQL Server 7.0, el lenguaje MDX se ha venido convirtiendo en una lengua estándar para este tipo de consultas. Es verdad que aunque fue creado por compañías propietarias, el lenguaje MDX ha sido adoptado también por el mundo del Software libre, para las aplicaciones OLAP existentes. Este lenguaje es útil para muchas cosas, desde aspectos de seguridad en el cubo, hasta el diseño de la navegación hacia adentro y fuera del cubo. En definitiva este lenguaje fue creado específicamente para el manejo de cubos OLAP. Una de las grandes características de este lenguaje es el de permitir el manejo de las agregaciones y los resultados precalculados, sin necesidad de que aparezcan físicamente establecidos en las bases de datos. Siguiendo con la notación del lenguaje, la forma natural de llamar a un miembro con una jerarquía suficiente podría ser como este: [lugar].[Colombia].[Cundinamarca].[Bogota].[Chapinero]. Esta sería la forma completa para referirse al barrio chapinero de la ciudad de Bogotá. Aunque muchas veces es posible usar expresiones más cortas, como [ciudad].[chapinero], esto se puede hacer, pero solo bajo ciertas condiciones de nombrado y ciertos datos. Por ejemplo, para el caso de la dimensión tiempo, es posible tener una expresión como "[tiempo].[octubre]". Pero como se podría saber si el octubre al que se hace referencia es al del año 2001 o 2002 o 2003?. Una forma de solucionar este inconveniente es el de hacer unas convenciones de nombramiento. Por ejemplo, si el miembro no se llamara octubre sino "octubre2001", ya se podría identificar con una corta expresión, es decir que se puede definir como: [tiempo].[octubre-2001] en vez de: [tiempo].[all].[2001].[octubre]. La sintaxis MDX no es solo para obtener datos de las bases multidimensionales, también provee una funcionalidad extra para el manejo de sets, manejo de miembros calculados y la escritura de información acerca de dimensiones y celdas. Para finalizar esta definición de MDX, se examina la siguiente consulta MDX, definida de la siguiente forma: SELECT {[Measures].[Cantidad_visitas], [tiempo].[All Members].[1998].[sem2]} ON columns, {[geografía].[All Members]} ON rows FROM [visitas] WHERE [vendedor].[juan] Esta sencilla consulta mdx presenta la misma estructura que una consulta SQL, es decir, tiene un select, un from y un where. Es importante notar que en el lenguaje mdx las medidas también son interpretadas como dimensiones. En este ejemplo se está consultando el número de visitas hechas en el segundo semestre de 1998 en todas las zonas, veredas y municipios, por el vendedor juan. Como se identifica en la sintaxis se da la opción de escoger como comparar las dimensiones, en filas o en columnas. [visitas] es el nombre del cubo. 13 2.4.1 Conceptos Avanzados con mdx. En la explicación anterior se revisaron los conceptos básicos de como construir una consulta MDX, en esta parte se explicarán conceptos mas avanzados de MDX. La estructura detallada de una consulta MDX se expone en el siguiente diagrama. Dimensiones Eje X, Columnas. SELECT {[Measures].[Cantidad_visitas], [tiempo].[All Members].[1998].[sem2]} ON columns, {[geografía].[All Members]} ON rows Eje Y, Filas. FROM [visitas] Alcance de la consulta, (cubo) WHERE [vendedor].[juan] Cláusula de selección Figura 6. Estructura de una consulta MDX Existe una similitud entre las consultas MDX y SQL, debido a que comparten sintaxis como lo son las cláusulas SELECT, FROM y WHERE. Sin embargo existen ciertos elementos que se distancian de SQL para dar soporte a las necesidades multidimensionales. En MDX se identifican varios miembros, que cumplen un rol determinado por su posición en la jerarquía. Children. La primera función es Children la cual, identifica el miembro o los miembros de un nivel por debajo del nivel inicial. Para usar la función Children se debe especificar el miembro, para que la función retorne todos los niveles por debajo de ella. Ejemplo: Se tiene la siguiente consulta MDX: select {[Measures].[Valor]} ON columns, Hierarchize({[Producto].[All Productos]}) ON rows from [cuboVentas] De esta consulta se obtiene el siguiente resultado Measures Valor Producto All 1,480,238,151 Productos 14 Que es el valor de las ventas de todos los productos. Ahora se utilizará la función children aplicada a la dimensión producto para comparar su resultado. Ejemplo de consulta select {[Measures].[Valor]} ON columns, Hierarchize(Union({[Producto].[All Productos]}, [Producto].[All Productos].Children)) ON rows from [cuboVentas] Al ejecutar la anterior consulta se da el siguiente resultado Measures Valor 1,480,238,151 All Productos Producto Asesora 5,510,000 Capacitación 110,569,754 Desarrollo 1,068,367,852 Instalación 147,968,876 Soporte 88,168,533 Esta nueva consulta muestra el valor vendido de todos los productos como un total y también de cada uno, pues cada producto es hijo de la categoría Producto. Count. La función Count retorna el numero de items de de un cubo, por ejemplo las dimensiones, las tuplas, las celdas, niveles en una dimensión o una jerarquía. Se tiene el siguiente ejemplo: with member [Measures].[total] as 'count([Producto].[All Productos].Children)' select {[Measures].[total]} ON columns from [cuboVentas] El resultado es el siguiente: Measures total 5 La función realiza un conteo de los componentes de Producto, que son cinco pues hay cinco categorías de productos. Avg. La función Avg retorna el promedio de un número total de miembros. En la siguiente consulta de ejemplo se utiliza esta función. 15 with member [Measures].[total] as 'Avg([Producto].[All Productos].Children)' select {[Measures].[total]} ON columns from [cuboVentas] El resultado es el promedio del valor de las ventas de las categorías de productos. Measures total 284,117,003 Max. La Función max retorna el máximo valor de un numero total de miembros. Max(«Set»[, «Numeric Expression»]) En el siguiente ejemplo se ve: with member [Measures].[total] as 'Max([Producto].[All Productos].Children)' select {[Measures].[total]} ON columns from [cuboVentas] Tiene el siguiente resultado: Measures total 1,068,367,852 En el cual se ve el valor de ventas de la categoría de producto con mayor valor en ventas. Min La Función min retorna un mínimo valor de un numero total de miembros. Min({Set}[, {Numeric Expression}]) Para la cual se da el siguiente ejemplo. with member [Measures].[total] as 'Min([Producto].[All Productos].Children)' select {[Measures].[total]} ON columns from [cuboVentas] Measures total 5,510,000 El resultado muestra el valor de la categoría de productos con menores ventas. Crossjoin 16 Frecuentemente en MDX, los resultados de una consulta deberán necesitar más miembros de más de una dimensión. Crossjoin({Set1}, {Set2}) Esta función retorna el producto cartesiano de distintos miembros de dos sets, que retorna todas las posibles combinaciones de esos miembros. El siguiente ejemplo muestra el uso de esta característica. select Crossjoin(Hierarchize(Union({[Ciudad].[All Ciudads]}, [Ciudad].[All Ciudads].Children)), {[Measures].[Valor]}) ON columns, {[Producto].[All Productos]} ON rows from [cuboVentas] Se genera el siguiente resultado: Ciudad All Ciudads - BOGOTA CALI MONTERIA Measures Measures Measures Measures Measures Producto Valor Valor Valor Valor Valor All 1,480,238,15 43,584,752 900,610,669 469,833,235 57,565,495 Productos Se hace un producto cartesiano entre el miembro Producto y Ciudad, para conocer el valor de las ventas de los productos en cada ciudad. 17 3. HERRAMIENTAS PARA EL DATAMART Para el desarrollo del datamart se usaron varias herramientas, y varias de ellas soportan el funcionamiento del datamart. A continuación se explica el concepto y funcionalidad de cada una de ellas, así como el proceso de instalación, administración y uso de estas aplicaciones, todas ellas de libre distribución. 3.1 JAKARTA-TOMCAT Tomcat es un sub proyecto de Jakarta que provee un poderoso servidor web (web-container) con soporte a Java Servlets y JSP. El servidor de Tomcat ha llegado a ser la referencia para el funcionamiento tanto de servlet como de JSP. Es muy estable y tiene todas las características de un servidor web comercial. Tomcat también proporciona funcionalidades adicionales que lo hacen una excelente opción para desarrollar una solución web. 3.1.1 El Manager de Tomcat El manager es una aplicación para administración del motor Tomcat que usa una interfaz vía web. En principio y por razones de seguridad no se puede ingresar al módulo manager hasta que sea creado un usuario de Tomcat con privilegio de administrador. Para crearlo se debe modificar el archivo de configuración de usuarios de Tomcat, que se encuentra en $Tomcathome/CATALINA_HOME/conf/tomcat-users.xml. A dicho archivo se deben agregar las siguientes líneas: <role rolename="manager"/> <user username="root" password="xxxxxxx" roles="manager"/> Debido a que es un documento xml, se debe respetar el orden de las etiquetas. Dicho de otro modo, la línea <role> debe insertarse debajo de las que ya están y lo mismo para la línea <user>. Con respecto a la línea <user> agregada, se puede poner el nombre de usuario que se prefiera, no hace falta que sea root (la condición de administrador se define en el atributo role, no en el nombre). Al momento de asignar el password puede ser cualquiera. Una vez se ha agregado el usuario, se debe reiniciar Tomcat y acceder, desde un navegador a la dirección http://localhost:8080/manager/html, se introduce la información del usuario administrador (username/password), recién creado y aparecerá la interfaz del manager. Dicha interfaz consta de 5 partes: o Message: Aquí se muestra el resultado de las órdenes que se le hayan dado al manager. Pueden ser OK o FAILED. 18 o Manager: Aquí se encuentran tres opciones. La primera recarga la lista de aplicaciones instaladas. Las dos siguientes son un enlace a la documentación de Tomcat. o Applications: Aquí aparece la lista de aplicaciones web que está ejecutando Tomcat. Para cada aplicación se tiene la columna “Commands” que es la más importante para administrar los servicios ofrecidos por Tomcat. Las opciones de Commands son: parar (stop), iniciar (start), recargar (reload) o borrar (undeploy) la aplicación. o Install: Desde aquí se suben aplicaciones directamente al Tomcat. Para agregar una aplicación, se da el url del archivo .war de la aplicación que se quiere instalar. Luego se oprime el botón install, y la aplicación es agregada a las aplicaciones soportadas por Tomcat. o Server information: Información respecto al servidor. Arranque del servidor Tomcat. Hay dos técnicas de arranque del servidor Tomcat La primera es mediante la variable de ambiente: - Estableciendo la variable de ambiente TOMCAT_HOME en la ruta del directorio el cual se ha instalado el Tomcat %TOMCAT_HOME%\bin\startup para Unix, %TOMCAT_HOME%/bin/startup.sh (para Windows La segunda puede hacerse modificando el directorio actual de trabajo: - Ejecute los siguientes comandos en el shell: cd$TOMCAT_HOME/bin (Linux) ./startup.sh (Unix) Hay dos técnicas para parar el Tomcat: Vía variable de ambiente: - Establecerla variable de ambiente TOMCAT_HOME en la ruta del directorio en la cual se instalo el Tomcat. - Ejecutar el comando prompt o shell: $TOMCAT_HOME/bin/shutdown.sh (para Unix) Modificando su actual directorio de trabajo: - Ejecutar los comandos siguientes en el prompt oshell: 19 cd $TOMCAT_HOME/bin ./shutdown.sh (para Linux) (para Linux) 3.2 POSTGRESQL PostgreSQL es un administrador de bases de datos relacionales, que soporta las instrucciones de SQL, y se encuentra entre los más populares y funcionales dentro del mundo del software libre. Además, ofrece una potencia adicional sustancial al incorporar los siguientes cuatro conceptos adicionales básicos en una vía en la que los usuarios pueden extender fácilmente el sistema clases herenci a tipos funcione s Otras características aportan potencia y flexibilidad adicional: Restricciones (Constraints) Disparadores (triggers) Reglas (rules) Integridad transaccional Estas características colocan a Postgresql en la categoría de las Bases de Datos identificadas como objeto-relacionales. Nótese que éstas son diferentes de las referidas como orientadas a objetos, que en general no son bien aprovechables para soportar lenguajes de bases de datos relacionales tradicionales. Postgresql tiene algunas características que son propias del mundo de las bases de datos orientadas a objetos. De hecho, algunas Bases de Datos comerciales han incorporado recientemente características en las que Postgresql fue pionera. Instalación de PostgreSQL En el directorio de instalación se digita la siguiente línea: [root#localhost]# su postgres [bash]$ 20 El siguiente paso es crear un nuevo usuario para la base de datos en postgresql, se digita lo siguiente: [bash]$:createuser Enter name of user to add: Ubiquando Shall the new user be allowed to create databases? (y/n) y Shall the new user be allowed to create more new users? (y/n) y CREATE USER [bash]$createdb martVentas CREATE DATABASE Para permitir conexiones tcp/ip, se necesita editar el fichero postgresql.conf y habilitar la opción tcpip_socket. En redhat 9, este fichero está localizado en /var/lib/pgsql/data. Como súper usuario (root) configure lo siguiente y se modifica la siguiente línea: #tcpip_socket = false y la cambiamos por los siguiente: tcpip_socket = true Queda un último paso que es editar el fichero pg_hba.conf. Este fichero especifica los ordenadores que pueden conectarse a la base de datos postgres. Se guarda el archivo y por ultimo se debe reiniciar el servicio. service postgresql restart 21 4. SCRIPTS DE CARGA A LA BASE DE DATOS Descripción: La Funcionalidad de los scripts de carga es realizar la carga de los datos a la base de datos que manipula el datamart, a partir de los archivos planos y de la base de datos “netcontable” que son utilizados como fuente del datamart. Este documento va a describir cual es la función de cada uno de cada archivos planos y de la base de datos netcontable que son las fuentes de datos, y de los scripts de carga, para los que se define cada cuanto se realiza su ejecución. Definición de los archivos planos: 1. Sectores.txt Este archivo contiene los sectores de clientes que se han identificado para Ubiquando, cada cliente de Ubiquando será relacionado con uno de estos sectores. Se tienen tres campos para identificar a cada sector, estos campos deben estar en la misma línea. El primer campo es el código del sector. Este código no se puede asignar al azar, pues tiene un significado. Los códigos que inician con “00” son categorías de Gobierno, si se quieren agregar subcategorías a Gobierno los códigos de estos subsectores deben iniciar con “00” y empezar a numerar cada subsector en el quinto carácter de este campo, incrementando de uno en uno. Por ejemplo, “00000” sería la primera subcategoría de gobierno, “00001” la siguiente, y continúa con “00002” y así sucesivamente. Los campos que inician con “01” hacen referencia a clientes del sector “Corporativo” y se incrementa la numeración del código para cada subsector de igual manera que en el caso de Gobierno. El último sector es el de Pymes, el cual inicia con “02” y cumple con los mismos requisitos en los códigos que los anteriores sectores. El segundo campo de cada línea, identifica el nombre de la categoría del sector. Este puede ser: Gobierno, Corporativo o Pymes. Y por último, el tercer campo de cada línea dice el nombre de la subcategoría de la categoría. Se pueden agregar subcategorías a cada categoría en este archivo, lo importante es mantener el estándar de codificación descrito en el párrafo anterior. El siguiente es un ejemplo de la estructura del archivo “Sectores.txt”. 00000;Gobierno;Gobierno 01000;Corporativo;Agremiaciones 01001;Corporativo;Salud 02000;PYMES;PYMES 2. Clientes.txt Este archivo es utilizado para relacionar a cada cliente de Ubiquando con el segmento al que pertenece, de acuerdo a la clasificación acordada de 22 clientes. Debe contener una lista de la identificación de todos los clientes, la cual es extraída de la tabla “tercero” y su campo “id” de la base de datos netcontable. Al lado de cada identificación, y separada por punto y coma (;) se debe incluir el código del sector al que pertenece el cliente. Los códigos de sector que se pueden incluir se encuentran en el archivo “sectores.txt” descrito previamente. Las siguientes dos líneas son un ejemplo de la estructura que debe contener el archivo. 8600136124;1002 8001443313;1001 3. “lineas.txt” Este archivo es utilizado para especificar las líneas de productos que tiene Ubiquando. Cada renglón de este archivo establece una línea de producto, especificando su código y luego de un punto y coma (;) se da el nombre de la línea. Cada producto pertenece a una línea y esta relación entre producto y línea se realiza en el archivo “productos.txt” que será descrito en la siguiente sección. Es importante el código de cada línea, pues a partir de este código se codifican los productos. A continuación se da todo el contenido del archivo “lineas.txt” por ser de gran utilidad para describir la siguiente sección. 0;Asesora 1;Instalación 2;Desarrollo 3;Capacitacion 4;Soporte 4. “productos.txt” En este archivo aparecen todos los productos que comercializa Ubiquando. Cada renglón del archivo especifica un producto, incluyendo un código del producto, seguido por punto y coma(;) y luego por el nombre del producto. Es importante la codificación de cada producto, pues de su código depende su clasificación en las líneas de producto. Todos los códigos tienen una longitud de cinco caracteres. Los códigos de producto que empiecen con “00” se refieren a productos de asesoría, los que empiezan con “01“ a instalación, los de “02” a desarrollo, los de “03” a capacitación y los de “04” a soporte. Luego de identificar a la línea de el producto codificado utilizando los dos primeros caracteres del código, se asigna un número a cada producto individual, estableciendo el quinto dígito del campo e incrementando este número para cada producto individual de la misma línea. A continuación se dan ejemplos de renglones incluidos en el archivo “productos.txt” . 01000;Mensajeria y Email 01001;Proteccion de Borde 01002;VPN 01003;PDC 23 En estos renglones todos los productos pertenecen a la línea Instalación, por iniciar con “01” y luego se incrementa el número del quinto dígito para establecer el código individual de cada producto. 5. “Ventas.txt” Dado que la mayoría de los registros de ventas existentes en las base de datos “netcontable”, la cual es utilizada para registrar ventas - entre otras cosas -, contienen información errónea respecto al producto vendido por cada factura, se dio la necesidad de crear este archivo. El archivo contiene todos los códigos de facturas encontrados en netcontable desde el 01/01/2004 hasta el 20/04/2005. Por cada código de factura se agrega el código del producto vendido en esa factura, separados ambos códigos por un punto y coma(;). Cada renglón del archivo corresponde a una factura. Este archivo fue creado hasta el 20/04/2005 para establecer el correcto código de producto vendido en estas facturas, pues el registrado en netcontable es erróneo. A partir de esta fecha se ingresan correctamente los códigos de productos vendidos a la base de datos netcontable, por lo tanto la carga de las facturas generadas luego de esta fecha se hace directamente a la base de datos netcontable y no a través de este archivo. Por lo que el archivo no se actualizará. A continuación se da un ejemplo de las líneas de este archivo, reafirmando que el primer campo corresponde al número de factura y el segundo al código del producto vendido en esa factura. 875;1008 876;4002 877;4002 Definición de Scripts: 6. Fechas200X.csv Este script se debe correr directamente en un cliente de PostgreSQL. El script inserta los datos directamente a la dimensión dim_tiempo de la base de datos martVentas del datamart. Lo que hace cada renglón de este archivo es crear el registro de un día de calendario a esta dimensión. Cada renglón tiene la forma “insert into dim_tiempo values(Número de llave primaria,número de año,'Nombre del número de semestre','Nombre del número de trimestre','nombre del mes',número de día);”. En la base de datos ya se encuentran, por defecto ingresadas las fechas hasta el 2006. Para agregar nuevas fechas es importante seguir con el mismo estándar y tener precaución de no repetir llaves primarias, por lo que es necesario, incrementar el valor de cada llave primaria en uno para cada nuevo registro. Por lo tanto, es importante verificar el último valor de llave primaria encontrado en la tabla dim_tiempo de la base de datos martVentas e insertar el nuevo registro con llave primaria de ese valor más uno. A continuación se da un ejemplo de un renglón de este archivo. insert into dim_tiempo values(161,2004,'Sem1','Trim2','Junio',11); 24 7. Propiedades.java Esta clase define los parámetros externos que requiere la clase CargaBodegaUbiquando.java descrita a continuación para ejecutarse. El único objetivo de “Propiedades.java” es especificar los datos del usuario de la base de datos martVentas, la ubicación de esta base de datos, la ubicación de los drivers de las bases de datos, y el directorio y nombres de los archivos de texto fuentes de datos para la bodega. 8. CargaBodegaUbiquando.java Esta clase es la única invocada por el usuario o el sistema para realizar el proceso de extracción, transformación y carga a la bodega. Antes de ejecutar esta clase es importante que se encuentren disponibles todos los archivos de texto fuentes en el directorio especificado por el archivo “Propiedades.java” y las bases de datos fuentes y destino. En esta clase se obtiene una instancia de seis clases, cada una encargada del proceso ETL de una dimensión y de la tabla de hechos. Luego de obtener la instancia de cada clase, se ejecuta el método correspondiente a cada clase para extraer, transformar y cargar su respectiva dimensión o tabla de hechos. A continuación se relaciona a cada clase instanciada dentro de “CargaBodegaUbiquando.java” con su dimensión o tabla de hechos objetivo. Clase Tabla del datamart CargaSectores dim_sector CargaLinea dim_linea CargaGeografia dim_geografia CargaProductos dim_producto CargaCliente dim_cliente CargaFactVenta fact_venta Luego de ejecutar la clase “CargaBodegaUbiquando.java”, la bodega estará cargada para hacerle los análisis necesarios con OLAP. A continuación se describe cada clase que aparece en la tabla superior en el orden de invocación de la clase principal “CargaBodegaUbiquando.java”. 9. CargaSectores.java Tiene como datos fuentes: Archivo “sectores.txt”. Esta clase tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en el archivo “sectores.txt” a la dimensión dim_sector. El método invocado desde la clase principal “CargaBodegaUbiquando.java” es cargarSectores(). En este método, lo 25 primero que se hace es borrar de la tabla dim_sector de la bodega todo lo que halla, para luego cargar en esa misma tabla los datos que se encuentren en el archivo “sectores.txt”. Por lo tanto, si se hiciese algún cambio en el archivo de sectores, al realizar la siguiente carga, la información del archivo sectores.txt actualizada reemplaza a la que se había cargado previamente. 10. CargaLinea.java Tiene como datos fuentes: Archivo “lineas.txt”. Esta clase tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en el archivo “lineas.txt” a la dimensión dim_linea. El método invocado desde la clase principal “CargaBodegaUbiquando.java” es cargarLinea(). En este método, lo primero que se hace es borrar de la tabla dim_linea de la bodega todo lo que halla, para luego cargar en esa misma tabla los datos que se encuentren en el archivo “lienas.txt”. Por lo tanto, si se hiciese algún cambio en el archivo de líneas, al realizar la siguiente carga, la información del archivo lineas.txt actualizada reemplaza a la que se había cargado previamente. 11. CargaGeografia.java Tiene como datos fuentes: Tabla ciudad de la base de datos netcontable. Esta clase tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en la base de datos netcontable en la tabla ciudad. Los campos extraídos de esta tabla son “codigo” y “nombre”. Estos campos son extraídos y cargados a una tabla temporal llamada “ciudad”, encontrada en la base de datos martVentas de PostgreSql. “ciudad” es independiente y se encuentra aislada del diagrama estrella de la bodega. En esta tabla se realizan las transformaciones que sean necesarias, para luego cargar los datos de esta tabla temporal a la tabla dim_geografia. Todos los datos de la tabla dim_geografia son borrados antes de cargar los nuevos datos de la tabla temporal. Y los datos de esta tabla temporal son borrados luego de realizar el proceso. 12. CargaProductos.java Tiene como datos fuentes: Archivo “productos.txt”. Esta clase tiene como objetivo extraer, transformar y cargar los datos fuentes, encontrados en el archivo “productos.txt” a la dimensión dim_producto. En este método, lo primero que se hace es borrar de la tabla dim_producto de la bodega todo lo que halla. Luego se leen los datos del archivo de texto y se hace la transformación para asignarle una llave foránea a cada producto, que indique su pertenencia a una línea. 13. CargaCliente.java Tiene como datos fuentes: Archivo “clientes.txt” y tabla tercero de base de datos netcontable. Esta clase tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en la base de datos netcontable en la tabla tercero y el archivo “clientes.txt”. Los campos extraídos de la tabla 26 tercero son “id, “nombre”” y “ciudad”. Primero se borran todos los datos existentes en la tabla dim_cliente y luego se insertan los datos encontrados en las fuentes. Los campos cli_idcliente, cli_nombre y cli_ciudad de la tabla destino dim_cliente son tomados de netcontable; y el campo cli_idsector que relaciona a un cliente con un sector, tiene como fuente el archivo clientes.txt. Son necesarias estas dos fuentes, pues en la base de datos netcontable no se establece correctamente le pertenencia del cliente a un sector, por lo tanto se requiere este archivo adicional. 14. CargaFactVenta.java Tiene como datos fuentes: Archivo “ventas.txt” y tabla comprobante de base de datos netcontable. Esta clase tiene como objetivo extraer, transformar (si fuese necesario) y cargar los datos fuentes, encontrados en la base de datos netcontable en la tabla comprobante y el archivo “ventas.txt”. Los campos extraídos de la tabla comprobante son “numero, “creacion”, ”tercero” y “total”. Los elementos del archivo de texto son: el número de factura y el código del producto vendido en esa factura. Para realizar el proceso ETL de esta tabla, se crea una tabla temporal llamada comprobante en la base de datos martVentas. Esta tabla es independiente del diagrama estrella de la bodega, solo se utiliza para hacer las transformaciones requeridas antes de insertar los datos en la tabla fact_venta de la bodega. En esta tabla temporal se insertan los datos extraídos de todos los registros de la tabla comprobante de la base de datos netcontable. Luego de haber extraído los datos, se borran todos los datos de la tabla fact_venta y se poblan con los nuevos. Preservación de errores Cuando se ejecuta el script de carga puede presentarse algún problema, si esto llega a ocurrir el script genera algunos mensajes que se pueden llegar a presentar en el cargue como pueden ser: Mal formato de la fecha y hora. No se tiene conexión con base de datos netcontable No tiene conexión con base de datos martVentas No se encuentra el archivo fuente xxx.txt. Entre otros más que se pueden presentar en el momento de la ejecución, actualmente la ejecución de los scripts envía los mensajes por pantalla. 27 5. QUIENES PUEDEN USAR LA HERRAMIENTA? Figura 6. Registro del usuario Como recomendación para usar la herramienta debe haberse seguido la capacitación planeada para Ubiquando para tal fin, y haber entendido los conceptos básicos de análisis multidimensional que expone este documento. Roles de usuarios. La aplicación del datamart define dos roles usuarios: Analista y administrador. Funciones de cada rol. Administrador. Tendrá acceso a todas las funciones básicas de la aplicación, es decir, ingreso y exploración. Adicionalmente podrá modificar el archivo Propiedades.txt para modificar las propiedades y usuarios de la base de datos. Analista: Tendrá acceso a las funciones de análisis de la aplicación: ingreso, visualización de consultas. 28 6. NAVEGANDO EN EL DATAMART Mondrian es una herramienta supremamente robusta en cuanto al manejo de hipercubos y tratamiento de bases de datos se refiere. • El usuario de mondrian debe tener conocimientos básicos de OLAP, generación y uso de hipercubos e inteligencia de negocios y administración. Por lo general, las Herramientas OLAP son dirigidas a usuarios que toman decisiones, como ejecutivos, gerentes o buzos de información. Por lo tanto son herramientas que permiten una interacción relativamente sencilla con el usuario, permitiéndole generar un cubo gráficamente o hacer gráficas con los resultados sin mayores conocimientos técnicos. El menú principal del datamart es el que se presenta a continuación: Figura 7. Menú principal del datamart Dicho menú muestra en su lado izquierdo la opción del datamart de Ubiquando. Al apuntar con el puntero del Mouse sobre esta opción, se despliega la opción “Análisis de ventas”. Para ingresa al reporte se da clic en el nombre de esta opción. Para explicar los modos y opciones de navegación en la herramienta se seguirá el proceso de realizar un reporte típico. Luego de entrar a la opción “Análisis de ventas” se muestra el primer resultado, que ha sido predeterminado para mostrar las ventas por productos. Esta vista se encuentra en la siguiente figura. 29 Figura 8. Reporte predeterminado del datamart En esta vista se determina que está involucrada la dimensión Producto y la medida Valor. En este ejemplo se ve el valor total vendido por todos los productos. Figura 9. Barra de herramientas OLAP de Mondrian Para poder interactuar con los reportes se utiliza la barra de herramientas de mondrian: Los nombres de los botones son los siguientes: • Navegador OLAP • Editor de MDX • Mostrar Miembros Padre • Detallar miembros padre • Ocultar celdas vacías • Intercambiar filas por columnas 30 • “Taladrar” miembro • “Taladrar” posición • “ Taladrar” reemplazando • “Taladrar a través” • Mostrar Gráfica y Configurar Gráfica • • Imprimir en PDF y configurar Impresión Exportar a Excel Salir al menú Principal Se continúa el ejemplo haciendo clic sobre el botón Navegador Olap, que muestra un menú con las dimensiones del cubo que pueden ser utilizadas para generar el reporte. 31 Figura 10. Dimensiones disponibles para el análisis OLAP En este caso, en las columnas del reporte se tiene la medida (valor) y en las filas la dimensión Producto. En la parte que dice Filter se encuentran todas las dimensiones del cubo que no intervienen directamente en la consulta específica. De allí, con ayuda de los iconos auxiliares se pueden ubicar las dimensiones en las columnas o las filas dependiendo del criterio del analista. En este mismo menú se puede ver como está compuesta una dimensión, haciendo clic sobre su nombre. La figura 11 muestra cómo se describe la dimensión Producto al hacer clic sobre su nombre. Figura 11. Composición de la dimensión Producto Se puede ver que esta dimensión tiene dos niveles, con cinco miembros, que son: Asesora, Capacitación, Desarrollo, Instalación y Soporte. Si se quiere hacer una consulta que involucre a solo uno o varios miembros, se seleccionan las casillas de verificación correspondiente a los miembros requeridos en la consulta. Usando el botón de “intercambio filas por columnas” se intercambian las dimensiones de lugar. A continuación se va a navegar un nivel más abajo en la 32 dimensión Producto. Para esto se da clic en el signo “+” que acompaña el nivel “ALL” de la dimensión: Figura 12. Drill down aplicado a la dimensión producto. De lo general (Producto) se va a analizar lo particular (Asesoria, Capacitacion, Desarrollo, Instalacion, Soporte) En el análisis aparecen ahora todas las categorías de productos. Si existiesen celdas sin valor, se puede oprimir el botón “Ocultar celdas vacías”, y de este modo se ocultarán los renglones en el reporte para los que no halla una medida. En este caso, los renglones donde el valor de venta es 0. En este navegador Olap se puede escribir una consulta MDX (explicado anteriormente) por líneas de código para realizar un reporte específico. Normalmente no se escribe código para realizar las consultas, pues este código es generado automáticamente por la herramienta cuando se navega y se escogen opciones utilizando el Mouse. Sin embargo, si el usuario es avanzado puede especificar directamente los criterios del reporte. Figura 13. Inserción de código MDX para generar consultas Hay otra serie de botones que prestan servicios de visualización de los padres de un miembro. El primero de ellos es el botón de “Detallar miembros padre”. Cambia la tabla de tal forma que al lado derecho en un solo bloque se muestren los padres del miembro. Al utilizar esta opción en el ejemplo seguido se muestra la siguiente tabla. 33 Figura 14. Opción “Detallar miembros padre” activada El botón “Detallar miembros padre” especifica el padre de cada miembro en su lado izquierdo, como se ve en la siguiente figura 14, donde el padre de las cinco categorías de productos es Producto. La siguiente es una de las funcionalidades más útiles de la herramienta, pero igual que todo en OLAP depende del modelamiento de la base de datos. Se llama Drill through o “taladrar a través”, y consiste en poder observar el detalle de determinada celda del cubo. Este detalle será tan específico como específicos sean los datos en la base de datos. Cabe aclarara que esta función no aplica en el caso de las sumarizaciones, por la razón anterior, ni cuando se trabaja con miembros o medidas calculadas como porcentajes o promedios. Se puede solamente obtener el detalle de los hechos. Luego de seleccionar la opción de taladrar, se da clic en la flecha verde que aparece al lado del valor de cada miembro. Al hacer clic en la flecha correspondiente al miembro Desarrollo de obtiene el siguiente resultado. Si se da clic sobre el botón “E” sobre la tabla de drill through, se puede configurar esta tabla de una mejor manera. Permitiendo establecer los campos que aparecerán en el reporte. Figura 15. Opción “drill through” activada para la dimensión Desarrollo. 34 Por último se encuentran los botones de despliegue gráfico y exportación. Si se utiliza la opción “mostrar gráfica”, se despliega un gráfico que muestra los datos que están en ese momento expresados en la tabla Figura 16. Reporte gráfico de la consulta Este gráfico se puede configurar con el siguiente botón, de configurar la gráfica: Figura 17. Configuración de la gráfica, con múltiples opciones de gráficos. En la opción Chart Type se encuentran los tipos de gráficas más comunes y útiles en reportes, como líneas verticales, horizontales, bloques, pies, entre otros. También es posible configurar las leyendas y el tamaño y tipo de letras de ellos, como también el tamaño de la gráfica. 35 El botón de “imprimir en PDF” es el que continúa. Al oprimir este botón se crea un archivo PDF que se puede guardar en el disco duro o se puede abrir. Dicho pdf se puede configurar con el siguiente botón. Figura 18. Configuración del archivo PDF de exportación. Las opciones para configurar el pdf incluyen darle un titulo al reporte, escoger el tamaño de la página, la orientación de la hoja y elegir la forma de incluir la gráfica en el pdf. Por último se encuentra la funcionalidad de exportar a Excel, con lo que se crea un archivo que se puede almacenar en el disco duro o ser abierto directamente. Este archivo Excel exporta los valores de la tabla que se este visualizando en el momento de la exportación. El último botón da la opción de regresar al menú principal. 36