Está en la página 1de 26

Analysis Server 2008

Diseo multidimensional.
Tecnologa OLAP
Tutorial

Marta Zorrilla
Universidad de Cantabria
2010

Tabla de contenidos

1.

Uso de Microsoft Analysis Services __________________________________ 3


1.1.

Cmo crear un cubo OLAP ____________________________________________ 5

1.2.

Construir dimensiones________________________________________________ 12

1.2.1.
1.2.2.

1.3.

Propiedades de las dimensiones_____________________________________________16


Elegir cmo ordenar los miembros de un nivel. ________________________________17

Definir medidas y miembros calculados en los cubos_______________________ 17

1.3.1.
1.3.2.

Creacin de conjuntos para consultas ________________________________________23


Propiedades del cubo _____________________________________________________25

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.

Figura 14.

Definir dimensin.

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.

1.2.1.

Dimensin Tiempo.

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.

Figura 20.

Crear Medida N pedidos.

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.

1.3.1.

Resultado del cubo para crecimiento de clientes

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

Collation

Identificador de configuracin regional (LCID) e


indicador de comparacin, separados por un carcter de
subrayado, como Latin1_General_C1_AS

DefaultMeasure

Expresin multidimensional (MDX) que define la medida


predeterminada para el cubo

Description

Descripcin del cubo, que se puede mostrar en


aplicaciones cliente

ErrorConfiguration

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

EstimatedRows

Nmero de filas estimadas en el cubo

ID

Identificador (Id.) nico del cubo

Language

Identificador de idioma del cubo

Name

Nombre descriptivo del cubo

ProactiveCaching

Configuracin de almacenamiento en cach automtico


para el cubo

ProcessingMode

Indica si la indizacin y la agregacin se deben producir


durante o despus del procesamiento; las opciones son
Regular o Lazy

ProcessingPriority

Determina la prioridad de procesamiento del cubo


durante operaciones en segundo plano, como indizacin
y agregaciones diferidas. El valor predeterminado es 0.

Indica si la cach de secuencias de comandos se debe


ScriptCacheProcessingMode generar durante o despus del procesamiento; las
opciones son Regular y Lazy
ScriptErrorHandlingMode

Determina el control de errores; las opciones son


IgnoreNone o IgnoreAll

Source

Vista de origen de datos utilizada para el cubo

StorageLocation

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

StorageMode

Modo de almacenamiento para el cubo; los valores son


MOLAP, ROLAP y HOLAP

Visible

Determina la visibilidad del cubo

También podría gustarte