sábado, 15 de noviembre de 2014

Ejemplo de herramientas OLAP

Creación de un Modelo OLAP

Es una estructura lógica que describe el plan comercial general. El modelo toma la forma de un esquema estrella, que representa la relación entre sus componentes con una estructura en estrella. En el centro del esquema se encuentra una tabla de hechos, que contiene los datos reales que desea utilizar, como por ejemplo las cifras de las ventas de productos.

De la tabla de hechos salen las tablas de mediciones que contienen los datos que definen las dimensiones OLAP, como por ejemplo números de cuentas, meses, nombres de productos.

Una vez iniciada la interfaz del escritorio de integración server, se debe conectar a los metadatos del catalogo OLAP. Modelo OLAP IBM DB2 OLAP SERVER


Luego de esta se debe iniciar el asistente de modelos OLAP y conectar a la base de datos de DB2 que contiene la fuente de datos.


Selección de la Tabla de Hechos

Cada modelo necesita una tabla de hechos que es el centro del esquema estrella. La dimensión Accounts contiene los datos numéricos que desea analizar y de las cuales desea hacer un seguimiento a lo largo del tiempo, como por ejemplo; ventas o inventarios, estos datos también reciben el nombre de datos de medidas variables y permiten una contabilidad inteligente durante el proceso analítico en línea.


Creación de Dimensiones


Unión de la Tabla de Mediciones

El esquema estrella representa las relaciones entre la tabla de hechos y las otras dimensiones del modelo. Se puede definir la estructura del esquema en estrella mediante uniones entre las tablas de mediciones y la tabla de hechos. La parte izquierda de la pagina Fact Table Joins lista todas las dimensiones del modelo.La parte derecha muestra las columnas que se unen entre las tablas de mediciones y la tabla de hechos, si existe una unión. 


Creación de Herencia

Las jerarquías organizan relaciones entre las columnas de una dimensión y se visualizan como estructura.


Guardar Modelo OLAP



Referencias: Procesamiento analítico en-línea (OLAP). Nadia Farías A. nlfarias@hotmail.com, Paula Pérez C. paulalittrel@hotmail.com, Pilar Opazo G. pili.opazo@hotmail.com. Escuela de Ingeniería Comercial CHILE


Herramienta OLAP Mondrian

 Mondrian nos permite emular una base multidimensional. Permitiéndonos así realizar consultas en lenguaje MDX, pensando en términos de cubos, hechos, dimensiones y valores en lugar de tablas, registros y campos.

La base relacional debe ser diseñada cuidadosamente de modo que sobre ella se pueda hacer el mapeo. Las estructuras comúnmente usadas son tres:

                     
  • Una única tabla para el cubo donde existe un registro por cada hecho (por ejemplo, un registro por cada venta). El registro tendrá un código único, un campo o más por cada dimensión y un campo por cada valor del hecho (un campo con el importe de la venta, otro con la cantidad de artículos vendidos, etc.).

  • Una estructura de estrella. Con una tabla central de hechos donde está el código único del mismo y los valores correspondientes, y varias tablas periféricas, una por cada dimensión. Los registros de la tabla central se relacionan con los registros de las tablas periféricas de un modo "muchos a uno", por lo tanto la tabla central posee además una clave foránea por dimensión.

[estrella.png]

             

  • Una estructura de copo de nieve. No muy alejada de la estrella, pero busca quitar relaciones de la tabla central para ahorrar espacio.

[copo-de-nieve.png]


Para mostrar un ejemplo de mapeo, supongamos un cubo llamado "Ventas" que posee todas las ventas de una pequeña cadena de mercados. Este cubo tendrá tres dimensiones: "Rubro", "Sucursal" y "Tiempo", y también un valor, el "Importe" de la venta. Previamente crearíamos una base de datos en algún servidor que tenga conectividad con JDBC, por ejemplo MySQL. Nuestra arquitectura será la típica estrella, con la tabla de hechos "venta" y una tabla adicional por cada dimensión.

Así las sentencias que crearán la base serán las siguientes:

create database olapmercado;
create table venta (id integer primary key, rubro_id integer,
        sucursal_id integer, tiempo_id integer, importe double);
create table rubro (id integer primary key, nombre char(20));
create table sucursal (id integer primary key, nombre char(20));
create table tiempo (id integer primary key, anio integer, mes integer);

Estas tablas deben ser llenadas. Probablemente queramos hacerlo con datos que se encuentran en algún otro sistema. Por eso debemos crear un script o programita que extraiga, transforme y cargue los datos (ETL), y que lo haga periodicamente, por ejemplo todas las semanas o todos los meses.

Para mapear el cubo con la tabla, creamos un archivo llamado "olapmercado.xml" con el siguiente contenido:


<?xml version="1.0"?>
<Schema name="olapmercado">
  <Dimension name="Rubro">
    <Hierarchy hasAll="true" allMemberName="Todos"
        primaryKey="id">
      <Table name="rubro"/>
      <Level name="Rubro" column="nombre"/>
    </Hierarchy>
  </Dimension>

  <Dimension name="Sucursal">
    <Hierarchy hasAll="true" allMemberName="Todas"
        primaryKey="id">
      <Table name="sucursal"/>
      <Level name="Sucursal" column="nombre"/>
    </Hierarchy>
  </Dimension>

  <Dimension name="Tiempo">
    <Hierarchy hasAll="true" allMemberName="Total"
        primaryKey="id">
      <Table name="tiempo"/>
      <Level name="Anio" column="anio"/>
      <Level name="Mes" column="mes"/>
    </Hierarchy>
  </Dimension>

  <Cube name="Ventas">
    <Table name="venta"/>

    <DimensionUsage name="Rubro" source="Rubro"
        foreignKey="rubro_id"/>
    <DimensionUsage name="Sucursal" source="Sucursal"
        foreignKey="sucursal_id"/>
    <DimensionUsage name="Tiempo" source="Tiempo"
        foreignKey="tiempo_id"/>

    <Measure name="Importe" column="importe"
        aggregator="sum" formatString="#,##0.00"/>
  </Cube>
</Schema>

Una vez hecho esto, ya estamos en condiciones de poder utilizar la API de Mondrian, basada en JDBC, para conectarnos a la base, ejecutar consultas MDX y obtener resultados.


Ligas de interés

No hay comentarios.:

Publicar un comentario