Vous êtes sur la page 1sur 26

Analysis Server 2008 Diseo multidimensional.

Tecnologa OLAP Tutorial

Marta Zorrilla Universidad de Cantabria 2010

Tabla de contenidos

1.
1.1. 1.2.

Uso de Microsoft Analysis Services __________________________________ 3


Cmo crear un cubo OLAP ____________________________________________ 5 Construir dimensiones________________________________________________ 12
Propiedades de las dimensiones_____________________________________________16 Elegir cmo ordenar los miembros de un nivel. ________________________________17 Creacin de conjuntos para consultas ________________________________________23 Propiedades del cubo _____________________________________________________25

1.2.1. 1.2.2.

1.3.

Definir medidas y miembros calculados en los cubos_______________________ 17

1.3.1. 1.3.2.

1. Uso de Microsoft Analysis Services En este apartado se introduce al lector en el uso de la herramienta de Microsoft que permite hacer anlisis multidimensional. Su nombre es Microsoft Analysis Services. A continuacin se realizan unas consideraciones que van a ayudar a hacer un buen uso de la herramienta. Un cubo OLAP es una representacin multidimensional de los datos detallados (filas concretas) y de los resumidos (agregados). Se utilizan para consultas analticas complejas que buscan informacin en la base de datos desde puntos de vista distintos, que quedan establecidos por sus dimensiones. Cada cubo representa una entidad de negocio diferente, como ventas o recursos humanos. Los cubos se crean a partir de un esquema de base de datos en estrella o en copo de nieve. Estos se caracterizan por tener tablas de hechos y tablas de dimensiones. Las tablas de hechos guardan los datos histricos. Estos generalmente son medidas numricas que describen una transaccin del negocio que se trate (ventas, transacciones bancarias,...). Las tablas de dimensiones se emplean para especificar el significado de los datos contenidos en la tabla de hechos. El esquema en estrella, Figura 1, se caracteriza por tener una tabla de hechos en el centro rodeada de tablas de dimensiones que contienen la descripcin de los hechos desnormalizados. El esquema en copo de nieve es una extensin del modelo en estrella en el que una o ms dimensiones se definen por varias tablas.

Figura 1.

Ejemplo de esquema en estrella.

Los cubos OLAP son esencialmente las funciones de agregacin que se calculan de acuerdo con el esquema en estrella o copo de nieve. Los datos y las agregaciones del cubo pueden almacenarse de diferentes modos: MOLAP, ROLAP, HOLAP. La estructura MOLAP almacena los datos y las agregaciones en una estructura multidimensional. Permite dimensiones que contengan hasta 5 millones de miembros. Es la ms eficiente en bsquedas, independiente del gestor y la que requiere mayor tiempo de procesado y de espacio en disco. Una desventaja es que hay que actualizarlo para que incorpore los datos nuevos que vayan entrando al DW. La estructura ROLAP mantiene los datos en la tabla de hechos original y almacena las agregaciones en tablas relacionales de la misma base de

datos. Es ms lenta la bsqueda pero es vlida aunque el tamao del cubo exceda los 5 Gb, donde MOLAP tiene problemas. La estructura HOLAP mantiene los datos en la tabla de hechos original y almacena las agregaciones en una estructura multidimensional.

1.1.

Cmo crear un cubo OLAP

A continuacin se establecern los pasos para crear un cubo OLAP sobre la base de datos Ventas_dwh. Se abre la herramienta SQL Server Business Intelligence Development Studio, eligiendo como tipo de proyecto Analysis Service. Comprobad que el servicio Analysis Services est iniciado. El primer paso es crear un Origen de datos configurndolo hacia la base de datos donde residen los esquemas en estrella. En este caso, la base de datos ventas_dwh en SQL Server2008. Indicar en carpeta de Impersonation Information qu usuario utiliza Analysis Services para conectarse a la BD relacional, poner por defecto la cuenta asociada al servicio (Figura 3).

Figura 2.

Definir el origen de datos.

Figura 3.

Definir el origen de datos.

A continuacin se crea un Vista de los orgenes de datos que recoja el esquema de nuestra estrella. Los proyectos de proceso analtico en lnea (OLAP) y minera de datos de Microsoft SQL Server se disean basndose en un modelo de datos lgico de tablas, vistas y consultas relacionadas de uno o varios orgenes de datos. Este modelo de datos lgico se denomina vista de origen de datos. Una vista de origen de datos es un objeto que contiene los metadatos de objetos de origen de datos seleccionados, incluidas las relaciones entre estos objetos definidos en el origen de datos subyacente o en la vista de origen de datos. Una vista de origen de datos almacena en cach los metadatos de los orgenes de datos a partir de los cuales se genera. Los metadatos almacenados en cach le permiten desarrollar un proyecto de Analysis Services sin tener una conexin activa continua con el origen de datos.

Figura 4.

Definir vista del origen de datos.

Antes de proseguir crear la referencia entre supervisor y EmpleadoID. En este momento ya se pueden definir los cubos que sean necesarios para nuestro Data Warehouse. Para ello se selecciona la opcin Nuevo cubo Asistente que arrancar el asistente de creacin de cubos (ver Figura 5).

Figura 5.

Invocar al asistente de generacin de cubos.

El asistente presenta la pantalla de la Figura 6.

Figura 6.

Pantalla inicial del asistente para generacin de cubos.

Al pulsar Siguiente>>, presenta la pantalla de la Figura 7 donde se seleccionar la vista del origen de datos que proporcionar los datos al cubo.

Figura 7.

Seleccin de la vista de origen de datos y tabla de hechos

A continuacin, tras pulsar Siguiente > se presenta la pantalla de la Figura 8 donde el asistente detecta las medidas a crear.

Figura 8.

Seleccin de medidas

A continuacin muestra las dimensiones que detecta y crea adems las jerarquas subyacentes en funcin de las relaciones que encuentra (puede que no tengan sentido para nosotros). Hay jerarquas de atributo (se crean para cada atributo de la tabla de dimensin) y jeraquas de usuario (que constan de varios niveles). A continuacin se confirman o modifican las tablas de hechos y dimensiones detectadas por el asistente (Figura 9).

Figura 9.

identificacin de tabla de hechos y dimensiones

Por ltimo se observa el cubo definido (Figura 10).

Figura 10.

Cubo definido

Ahora vamos a revisar las medidas definidas. Se puede observar en carpeta Propiedades la operacin definida sobre cada una de las medidas. Todas ellas tienen la operacin SUM por defecto, a excepcin del atributo Recuento Ventas Fact que es COUNT. Atencin con PedidoID no tiene sentido sumarizarlo, este lo utilizaremos para medidas calculadas, as que lo eliminamos. Una vez diseado el cubo hay que construirlo. Para ello se elige la opcin Procesar del men Generar y se pulsa Ejecutar, sino hay ningn error se mostrar la imagen de la Figura 11.

Figura 11.

Cubo construido

Ahora ya podemos utilizarlo (construir consultas) desde la carpetilla Examinador.

Figura 12.

Examinando el cubo.

Se observa que las dimensiones no ofrecen atributos ni jerarquas de inters por lo que hay que editarlas y modificarlas.

1.2.

Construir dimensiones

Comenzamos revisando la dimensin Producto. Para ello pulsamos doble clic sobre la dimensin en la ventana del Explorador de soluciones. Vemos que por defecto el asistente solo asigna el atributo clave. As que incorporaremos a la dimensin los distintos atributos por los que se quiera consultar. Tambin crearemos dos jerarquias de usuario: categora producto y suministrador producto Consideraremos mnimoStock y obsoleto como propiedades del nombre del producto pues no tiene mucho sentido como atributo de consulta, aunque en la dimensin se mantendr (se establece en versin 2008 en la carpetilla Relaciones de atributos). La idea de las propiedades es poder mostrar esta informacin en vez de navegar por la jerarqua de atributos para verla.

Nota en Versin 2005: hay que establecer la Cardinalidad a 1 en la relacin del atributo (un producto tiene un mnimo stock y solo una situacin de obsoleto). En versin 2008: se hace por medio del establecimiento de las relaciones de atributo (ver Figura 14). Para cada tabla incluida en una dimensin, hay una relacin de atributos que relaciona el atributo clave de la tabla con otros atributos en esa tabla. Esto tiene como ventaja: - Reducir la cantidad de memoria necesaria para procesar la dimensin. Esto acelera el procesamiento de dimensiones, particiones y consultas. - Aumentar el rendimiento de las consultas porque el acceso al almacenamiento es ms rpido y se optimizan mejor los planes de ejecucin. - Hacer que los algoritmos de diseo de agregaciones seleccionen agregados ms efectivos, siempre y cuando las jerarquas definidas por el usuario se hayan establecido a lo largo de las rutas de acceso de la relacin. La principal restriccin al crear una relacin de atributos consiste en asegurarse de que el atributo al que la relacin de atributos hace referencia no tenga ms de un valor para ningn miembro en el atributo al que pertenece la relacin de atributos. Por ejemplo, si se define una relacin entre un atributo ProductoNombre y una CategoriaNombre, cada productoNombre slo puede relacionarse con una nica CategoriaNombre.

Figura 13.

Definir dimensin.

Figura 14.

Definir relaciones de atributo.

Al explorar la dimensin, podemos seleccionar cada uno de los atributos o jerarquas y visualizar las propiedades de sus miembros al pulsar el botn Propiedades (Figura 15).

Figura 15.

Dimensin con sus propiedades.

La dimensin Transporte requiere nicamente aadir el atributo nombre. En la dimensin Cliente crearemos las jerarquas que se ven en la figura 16.

Figura 16.

Dimensin cliente.

En la dimensin Empleado, se observa que ha creado una jerarqua por supervisor al detectar la relacin reflexiva supervisor-empleado. Se puede observar que el asistente ha identificado supervisor como uso de atributo primario (ver icono en seccin de atributos). Si vemos los datos de la jerarqua, sta solo contiene nmeros, los que representa la clave (empleadoKey). Si queremos que en vez de mostrar la clave muestre el nombre, cambiamos la propiedad NameColumn (Figura 17). Adems crearemos la jerarqua Puesto empleado.

Figura 17.

Dimensin empleado cambiada por la relacin primarioclave.

Por ltimo est la dimensin temporal. Crearemos las jerarquas especificadas en la Figura 18. Observar que aunque la jerarqua Aotrimestre-mes-dia tiene el atributo mes, se ha puesto en NameColumn el MesAo para que salga el texto y no el nmero, tambin podemos elegir el atributo MesAo. Adems se ha establecido la ordenacin de cada atributo por key y no por name para que la ordenacin sea nmerica y no alfanumrica.

Figura 18.

Dimensin Tiempo.

1.2.1.

Propiedades de las dimensiones

A continuacin se comentarn algunas propiedades de las dimensiones que permiten personalizar el comportamiento de las mismas. Propiedades dimensin: AttributeAllMemberName: texto que se mostrar para el nivel superior (Todos) Default member: El miembro predeterminado se utiliza cuando se evala una celda y no hay ningn otro miembro especificado para la dimensin (condicin por la cul se hace el browse de los datos). Esta es utilizada si la dimensin no est incluida en una consulta. Por defecto el Analysis Server incluye todas las dimensiones en la consulta para que luego el usuario haga los filtros. Member keys unique: Indica si las claves de miembro son nicas a travs de toda la dimensin. Member name unique: Indica si los nombres de miembros son nicos a travs de toda la dimensin. Caso de una dimensin versionada. Storage Mode: modo de almacenamiento Molap o Rolap.

Propiedades nivel: Member key column: Indica el nombre de la columna que contiene las claves de miembro. Member name column: Indica el nombre de la columna que contiene el nombre de los miembros. Este valor puede ser un campo o una

concatenacin de ellos ("producto"."producto_nombre" "producto"."producto_version")

1.2.2.

Elegir cmo ordenar los miembros de un nivel.

Member key column tiene un nmero entero que referencia a cada miembro. Member name column es el ttulo de la columna que se muestra en el cubo. Order by campo por el que se establece la ordenacin. Por defecto, las dos primeras propiedades toman el mismo valor pero al independizarlas permite establecer la ordenacin, como se puede observar en la dimensin Empleado (EmpleadoKey y EmpleadoApellidosNombre).

1.3. Definir medidas y miembros calculados en los cubos


Un cubo debe contener al menos una dimensin y una medida. La medida ms simple corresponde a un campo numrico de la tabla de hechos. Pero es posible tambin crear medidas. Por ejemplo, vamos a crear la medida COMISION como el 15% de total de la lnea y el n de pedidos como la cuenta de distintos pedidosID. Para ello se pulsa sobre la seccin de Medidas y se indica Nueva medida. Se seleciona el atributo sobre el que se construir la medida derivada (por ejemplo PedidoID) y luego en propiedades se establecer la funcin de agregacin y su nombre (Ver Figura 19). Para el caso de la comisin, no nos deja establecer la funcin de clculo en la versin Standard Edition, lo que podemos resolver, creando este campo en la vista del origen de datos, a travs de crear un nuevo clculo con nombre en la tabla de hechos (Ver Figura 20) y luego agregarla al grupo de medidas del cubo.

Figura 19.

Crear Medida N pedidos.

Figura 20.

Crear medida comisin.

Por defecto, la funcin de agregacin de cualquier medida es la suma. Si quisieramos crear un indicador (ratio) que muestre el margen neto obtenido ( = beneficio / total) para que sea correcto, se debe realizar la agregacin antes de la divisin. Por ello es necesario crear un miembro calculado. La diferencia entre medida y miembro calculado es cundo el clculo se realiza.

Una medida derivada se calcula antes que las agregaciones sean creadas y los valores son almacenados en el cubo. Un miembro calculado se calculan las agregaciones y los miembros no son almacenadas en el cubo. Como ejemplo vamos a calcular el margen neto que se ha conseguido en las ventas. Poner la propiedad Format String a Porcentaje. Y tambin podeis poner un cdigo de colores para que se marque cuando est por encima o por debajo de un determinado valor.

Figura 21.

Crear mtrica calculada margenNeto.

Tambin se puede calcular la aportacin de cada miembro de la dimensin producto al beneficio total, para saber qu productos son los que ms beneficios nos aportan (Ver Figura 22).

Figura 22.

Crear mtrica aportacin de cada producto al beneficio.

Ahora vamos a calcular un valor promedio, por ejemplo el importe medio por pedido. Para ello hace falta usar la funcin count. Esta funcin cuenta filas y puede ser utilizada sobre cualquier campo tanto numrico como no numrico, a diferencia del SUM, MAX y MIN. Utilizaremos la dimensin degenerada PedidoID para definir la variable NumPedidos (ya hecho previamente). Y ahora creamos el miembro calculado:

Figura 23.

Crear mtrica aportacin.

Ahora vamos a calcular ratios, uno como la aportacin de cada producto en el beneficio total y la misma aportacin pero desglosado por categora.
CREATE MEMBER CURRENTCUBE.[MEASURES].[Aportacion (Ratio) del producto al beneficio total] AS [Measures].[Beneficio Total Linea]/ ( // The Root function returns the (All) value for the target dimension. Root ( [Producto dim] ), [Measures].[Beneficio Total Linea] ), FORMAT_STRING = "Percent", VISIBLE = 1 ;

CREATE MEMBER CURRENTCUBE.[MEASURES].[Aportacion (ratio) del producto respecto a su categora en relacin al beneficio] AS Case When [Producto Dim].[Categproducto].CurrentMember.Level.Ordinal = 0 Then 1 Else [Measures].[Beneficio Total Linea] / ( [Producto Dim].[ Categ-producto].CurrentMember.Parent, [Measures].[Beneficio Total Linea] ) End,

FORMAT_STRING = "Percent",

VISIBLE = 1

A continuacin se observa el resultado. Daos cuenta que solo tiene sentido si se tiene a la dimension producto en una de las dimensiones. Aunque se pueden aadir ms para filtrar. Se observa que no tiene sentido si aparecen 100%

Figura 24.

Resultado de la mtrica aportacin creada

Tambin podemos crear el miembro calculado incremento de clientes. Previamente hay que crear la medida DistintosClientes creando una nueva medida sobre el campo clientekey de la tabla de hechos. Dado que solo puede haber una medida con operador DISTINCTCOUNT, crearemos otro cubo con las dimensiones tiempo y cliente.

CREATE MEMBER CURRENTCUBE.[MEASURES].[Crecimiento en cartera de clientes] AS Case When [Tiempo Dim].[Ao - Trimestre - Mes da].CurrentMember.Level.Ordinal = 0 Then "NA" When IsEmpty ( ( [[Tiempo Dim].[Ao - Trimestre - Mes da].CurrentMember.PrevMember, [Measures].[DistintosClientes]

) ) Then Null Else ( ( [Tiempo Dim].[Ao - Trimestre - Mes da].CurrentMember, [Measures].[DistintosClientes] ) ( [Tiempo Dim].[Ao - Trimestre - Mes da].PrevMember, [Measures].[DistintosClientes] ) ) / ( [Tiempo Dim].[Ao - Trimestre - Mes - da]. PrevMember,[Measures].[DistintosClientes] ) End, FORMAT_STRING = "Percent", NON_EMPTY_BEHAVIOR = { [DistintosClientes] },

VISIBLE = 1

Figura 25.

Resultado del cubo para crecimiento de clientes

1.3.1.

Creacin de conjuntos para consultas

Uso de definicin de conjuntos para usar en dimensiones, ejemplo de Clientes europeos

uso

Otro ejemplo, es la seleccin de productos no obsoletos:

1.3.2.

Propiedades del cubo

Los cubos tienen una serie de propiedades que se pueden configurar para que influyan en el comportamiento de todo el cubo, y algunas propiedades que no se pueden modificar. Estas propiedades se resumen en la tabla siguiente: Propiedad AggregationPrefix Definicin Prefijo comn que se utiliza para los nombres de agregaciones Identificador de configuracin regional (LCID) e indicador de comparacin, separados por un carcter de subrayado, como Latin1_General_C1_AS Expresin multidimensional (MDX) que define la medida predeterminada para el cubo Descripcin del cubo, que se puede mostrar en aplicaciones cliente Opciones de control de errores configurables para control de claves duplicadas, claves desconocidas, lmites de error, acciones al detectarse un error, archivo de registro de errores y control de claves NULL Nmero de filas estimadas en el cubo Identificador (Id.) nico del cubo Identificador de idioma del cubo

Collation

DefaultMeasure

Description

ErrorConfiguration

EstimatedRows ID Language

Name ProactiveCaching

Nombre descriptivo del cubo Configuracin de almacenamiento en cach automtico para el cubo Indica si la indizacin y la agregacin se deben producir durante o despus del procesamiento; las opciones son Regular o Lazy Determina la prioridad de procesamiento del cubo durante operaciones en segundo plano, como indizacin y agregaciones diferidas. El valor predeterminado es 0.

ProcessingMode

ProcessingPriority

Indica si la cach de secuencias de comandos se debe ScriptCacheProcessingMode generar durante o despus del procesamiento; las opciones son Regular y Lazy ScriptErrorHandlingMode Source Determina el control de errores; las opciones son IgnoreNone o IgnoreAll Vista de origen de datos utilizada para el cubo Ubicacin de almacenamiento del sistema de archivos para el cubo. Si no se especifica ninguna ubicacin, se hereda de la base de datos que contiene el objeto de cubo Modo de almacenamiento para el cubo; los valores son MOLAP, ROLAP y HOLAP Determina la visibilidad del cubo

StorageLocation

StorageMode Visible