12.05.2013 Views

manual - Universidad de Cantabria

manual - Universidad de Cantabria

manual - Universidad de Cantabria

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Analysis Server 2008<br />

Diseño multidimensional.<br />

Tecnología OLAP<br />

Tutorial<br />

Marta Zorrilla<br />

<strong>Universidad</strong> <strong>de</strong> <strong>Cantabria</strong><br />

©2010


Tabla <strong>de</strong> contenidos<br />

1. Uso <strong>de</strong> Microsoft Analysis Services __________________________________ 3<br />

1.1. Cómo crear un cubo OLAP ____________________________________________ 5<br />

1.2. Construir dimensiones________________________________________________ 12<br />

1.2.1. Propieda<strong>de</strong>s <strong>de</strong> las dimensiones_____________________________________________16<br />

1.2.2. Elegir cómo or<strong>de</strong>nar los miembros <strong>de</strong> un nivel. ________________________________17<br />

1.3. Definir medidas y miembros calculados en los cubos_______________________ 17<br />

1.3.1. Creación <strong>de</strong> conjuntos para consultas ________________________________________23<br />

1.3.2. Propieda<strong>de</strong>s <strong>de</strong>l cubo_____________________________________________________25


1. Uso <strong>de</strong> Microsoft Analysis Services<br />

En este apartado se introduce al lector en el uso <strong>de</strong> la herramienta <strong>de</strong><br />

Microsoft que permite hacer análisis multidimensional. Su nombre es<br />

Microsoft Analysis Services.<br />

A continuación se realizan unas consi<strong>de</strong>raciones que van a ayudar a hacer<br />

un buen uso <strong>de</strong> la herramienta.<br />

Un cubo OLAP es una representación multidimensional <strong>de</strong> los datos<br />

<strong>de</strong>tallados (filas concretas) y <strong>de</strong> los resumidos (agregados). Se utilizan para<br />

consultas analíticas complejas que buscan información en la base <strong>de</strong> datos<br />

<strong>de</strong>s<strong>de</strong> puntos <strong>de</strong> vista distintos, que quedan establecidos por sus<br />

dimensiones. Cada cubo representa una entidad <strong>de</strong> negocio diferente, como<br />

ventas o recursos humanos.<br />

Los cubos se crean a partir <strong>de</strong> un esquema <strong>de</strong> base <strong>de</strong> datos en estrella o<br />

en copo <strong>de</strong> nieve. Estos se caracterizan por tener tablas <strong>de</strong> hechos y tablas<br />

<strong>de</strong> dimensiones. Las tablas <strong>de</strong> hechos guardan los datos históricos. Estos<br />

generalmente son medidas numéricas que <strong>de</strong>scriben una transacción <strong>de</strong>l<br />

negocio que se trate (ventas, transacciones bancarias,...). Las tablas <strong>de</strong><br />

dimensiones se emplean para especificar el significado <strong>de</strong> los datos<br />

contenidos en la tabla <strong>de</strong> hechos.<br />

El esquema en estrella, Figura 1, se caracteriza por tener una tabla <strong>de</strong><br />

hechos en el centro ro<strong>de</strong>ada <strong>de</strong> tablas <strong>de</strong> dimensiones que contienen la<br />

<strong>de</strong>scripción <strong>de</strong> los hechos <strong>de</strong>snormalizados. El esquema en copo <strong>de</strong> nieve es<br />

una extensión <strong>de</strong>l mo<strong>de</strong>lo en estrella en el que una o más dimensiones se<br />

<strong>de</strong>finen por varias tablas.


Figura 1. Ejemplo <strong>de</strong> esquema en estrella.<br />

Los cubos OLAP son esencialmente las funciones <strong>de</strong> agregación que se<br />

calculan <strong>de</strong> acuerdo con el esquema en estrella o copo <strong>de</strong> nieve.<br />

Los datos y las agregaciones <strong>de</strong>l cubo pue<strong>de</strong>n almacenarse <strong>de</strong> diferentes<br />

modos: MOLAP, ROLAP, HOLAP.<br />

La estructura MOLAP almacena los datos y las agregaciones en una<br />

estructura multidimensional. Permite dimensiones que contengan hasta 5<br />

millones <strong>de</strong> miembros. Es la más eficiente en búsquedas, in<strong>de</strong>pendiente <strong>de</strong>l<br />

gestor y la que requiere mayor tiempo <strong>de</strong> procesado y <strong>de</strong> espacio en disco.<br />

Una <strong>de</strong>sventaja es que hay que actualizarlo para que incorpore los datos<br />

nuevos que vayan entrando al DW.<br />

La estructura ROLAP mantiene los datos en la tabla <strong>de</strong> hechos original y<br />

almacena las agregaciones en tablas relacionales <strong>de</strong> la misma base <strong>de</strong>


datos. Es más lenta la búsqueda pero es válida aunque el tamaño <strong>de</strong>l cubo<br />

exceda los 5 Gb, don<strong>de</strong> MOLAP tiene problemas.<br />

La estructura HOLAP mantiene los datos en la tabla <strong>de</strong> hechos original y<br />

almacena las agregaciones en una estructura multidimensional.<br />

1.1. Cómo crear un cubo OLAP<br />

A continuación se establecerán los pasos para crear un cubo OLAP sobre la<br />

base <strong>de</strong> datos Ventas_dwh.<br />

Se abre la herramienta SQL Server Business Intelligence Development<br />

Studio, eligiendo como tipo <strong>de</strong> proyecto Analysis Service. Comprobad que el<br />

servicio Analysis Services está iniciado.<br />

El primer paso es crear un Origen <strong>de</strong> datos configurándolo hacia la base <strong>de</strong><br />

datos don<strong>de</strong> resi<strong>de</strong>n los esquemas en estrella. En este caso, la base <strong>de</strong><br />

datos ventas_dwh en SQL Server2008. Indicar en carpeta <strong>de</strong> Impersonation<br />

Information qué usuario utiliza Analysis Services para conectarse a la BD<br />

relacional, poner por <strong>de</strong>fecto la cuenta asociada al servicio (Figura 3).<br />

Figura 2. Definir el origen <strong>de</strong> datos.


Figura 3. Definir el origen <strong>de</strong> datos.<br />

A continuación se crea un Vista <strong>de</strong> los orígenes <strong>de</strong> datos que recoja el<br />

esquema <strong>de</strong> nuestra estrella. Los proyectos <strong>de</strong> proceso analítico en línea<br />

(OLAP) y minería <strong>de</strong> datos <strong>de</strong> Microsoft SQL Server se diseñan basándose<br />

en un mo<strong>de</strong>lo <strong>de</strong> datos lógico <strong>de</strong> tablas, vistas y consultas relacionadas <strong>de</strong><br />

uno o varios orígenes <strong>de</strong> datos. Este mo<strong>de</strong>lo <strong>de</strong> datos lógico se <strong>de</strong>nomina<br />

vista <strong>de</strong> origen <strong>de</strong> datos. Una vista <strong>de</strong> origen <strong>de</strong> datos es un objeto que<br />

contiene los metadatos <strong>de</strong> objetos <strong>de</strong> origen <strong>de</strong> datos seleccionados,<br />

incluidas las relaciones entre estos objetos <strong>de</strong>finidos en el origen <strong>de</strong> datos<br />

subyacente o en la vista <strong>de</strong> origen <strong>de</strong> datos. Una vista <strong>de</strong> origen <strong>de</strong> datos<br />

almacena en caché los metadatos <strong>de</strong> los orígenes <strong>de</strong> datos a partir <strong>de</strong> los<br />

cuales se genera. Los metadatos almacenados en caché le permiten<br />

<strong>de</strong>sarrollar un proyecto <strong>de</strong> Analysis Services sin tener una conexión activa<br />

continua con el origen <strong>de</strong> datos.


Figura 4. Definir vista <strong>de</strong>l origen <strong>de</strong> datos.<br />

Antes <strong>de</strong> proseguir crear la referencia entre supervisor y EmpleadoID.<br />

En este momento ya se pue<strong>de</strong>n <strong>de</strong>finir los cubos que sean necesarios para<br />

nuestro Data Warehouse. Para ello se selecciona la opción “Nuevo cubo” –<br />

“Asistente” que arrancará el asistente <strong>de</strong> creación <strong>de</strong> cubos (ver Figura 5).<br />

Figura 5. Invocar al asistente <strong>de</strong> generación <strong>de</strong> cubos.<br />

El asistente presenta la pantalla <strong>de</strong> la Figura 6.


Figura 6. Pantalla inicial <strong>de</strong>l asistente para generación <strong>de</strong> cubos.<br />

Al pulsar “Siguiente>>”, presenta la pantalla <strong>de</strong> la Figura 7 don<strong>de</strong> se<br />

seleccionará la vista <strong>de</strong>l origen <strong>de</strong> datos que proporcionará los datos al<br />

cubo.<br />

Figura 7. Selección <strong>de</strong> la vista <strong>de</strong> origen <strong>de</strong> datos y tabla <strong>de</strong> hechos<br />

A continuación, tras pulsar “Siguiente >” se presenta la pantalla <strong>de</strong> la<br />

Figura 8 don<strong>de</strong> el asistente <strong>de</strong>tecta las medidas a crear.


Figura 8. Selección <strong>de</strong> medidas<br />

A continuación muestra las dimensiones que <strong>de</strong>tecta y crea a<strong>de</strong>más las<br />

jerarquías subyacentes en función <strong>de</strong> las relaciones que encuentra (pue<strong>de</strong><br />

que no tengan sentido para nosotros). Hay jerarquías <strong>de</strong> atributo (se crean<br />

para cada atributo <strong>de</strong> la tabla <strong>de</strong> dimensión) y jeraquías <strong>de</strong> usuario (que<br />

constan <strong>de</strong> varios niveles). A continuación se confirman o modifican las<br />

tablas <strong>de</strong> hechos y dimensiones <strong>de</strong>tectadas por el asistente (Figura 9).


Figura 9. i<strong>de</strong>ntificación <strong>de</strong> tabla <strong>de</strong> hechos y dimensiones<br />

Por último se observa el cubo <strong>de</strong>finido (Figura 10).<br />

Figura 10. Cubo <strong>de</strong>finido<br />

Ahora vamos a revisar las medidas <strong>de</strong>finidas. Se pue<strong>de</strong> observar en carpeta<br />

Propieda<strong>de</strong>s la operación <strong>de</strong>finida sobre cada una <strong>de</strong> las medidas. Todas<br />

ellas tienen la operación SUM por <strong>de</strong>fecto, a excepción <strong>de</strong>l atributo<br />

Recuento Ventas Fact que es COUNT. Atención con PedidoID no tiene<br />

sentido sumarizarlo, este lo utilizaremos para medidas calculadas, así que lo<br />

eliminamos.<br />

Una vez diseñado el cubo hay que construirlo. Para ello se elige la opción<br />

Procesar <strong>de</strong>l menú Generar y se pulsa Ejecutar, sino hay ningún error se<br />

mostrará la imagen <strong>de</strong> la Figura 11.


Figura 11. Cubo construido<br />

Ahora ya po<strong>de</strong>mos utilizarlo (construir consultas) <strong>de</strong>s<strong>de</strong> la carpetilla<br />

Examinador.<br />

Figura 12. Examinando el cubo.<br />

Se observa que las dimensiones no ofrecen atributos ni jerarquías <strong>de</strong><br />

interés por lo que hay que editarlas y modificarlas.


1.2. Construir dimensiones<br />

Comenzamos revisando la dimensión Producto. Para ello pulsamos doble clic<br />

sobre la dimensión en la ventana <strong>de</strong>l Explorador <strong>de</strong> soluciones. Vemos que<br />

por <strong>de</strong>fecto el asistente solo asigna el atributo clave. Así que<br />

incorporaremos a la dimensión los distintos atributos por los que se quiera<br />

consultar. También crearemos dos jerarquias <strong>de</strong> usuario: categoría <br />

producto y suministrador producto<br />

Consi<strong>de</strong>raremos mínimoStock y obsoleto como propieda<strong>de</strong>s <strong>de</strong>l nombre <strong>de</strong>l<br />

producto pues no tiene mucho sentido como atributo <strong>de</strong> consulta, aunque<br />

en la dimensión se mantendrá (se establece en versión 2008 en la carpetilla<br />

Relaciones <strong>de</strong> atributos). La i<strong>de</strong>a <strong>de</strong> las propieda<strong>de</strong>s es po<strong>de</strong>r mostrar esta<br />

información en vez <strong>de</strong> navegar por la jerarquía <strong>de</strong> atributos para verla.<br />

Nota en Versión 2005: hay que establecer la Cardinalidad a 1 en la relación<br />

<strong>de</strong>l atributo (un producto tiene un mínimo stock y solo una situación <strong>de</strong><br />

obsoleto).<br />

En versión 2008: se hace por medio <strong>de</strong>l establecimiento <strong>de</strong> las relaciones <strong>de</strong><br />

atributo (ver Figura 14). Para cada tabla incluida en una dimensión, hay una<br />

relación <strong>de</strong> atributos que relaciona el atributo clave <strong>de</strong> la tabla con otros<br />

atributos en esa tabla. Esto tiene como ventaja:<br />

- Reducir la cantidad <strong>de</strong> memoria necesaria para procesar la dimensión.<br />

Esto acelera el procesamiento <strong>de</strong> dimensiones, particiones y consultas.<br />

- Aumentar el rendimiento <strong>de</strong> las consultas porque el acceso al<br />

almacenamiento es más rápido y se optimizan mejor los planes <strong>de</strong><br />

ejecución.<br />

- Hacer que los algoritmos <strong>de</strong> diseño <strong>de</strong> agregaciones seleccionen<br />

agregados más efectivos, siempre y cuando las jerarquías <strong>de</strong>finidas por el<br />

usuario se hayan establecido a lo largo <strong>de</strong> las rutas <strong>de</strong> acceso <strong>de</strong> la relación.<br />

La principal restricción al crear una relación <strong>de</strong> atributos consiste en<br />

asegurarse <strong>de</strong> que el atributo al que la relación <strong>de</strong> atributos hace referencia<br />

no tenga más <strong>de</strong> un valor para ningún miembro en el atributo al que<br />

pertenece la relación <strong>de</strong> atributos. Por ejemplo, si se <strong>de</strong>fine una relación<br />

entre un atributo ProductoNombre y una CategoriaNombre, cada<br />

productoNombre sólo pue<strong>de</strong> relacionarse con una única CategoriaNombre.


Figura 13. Definir dimensión.<br />

Figura 14. Definir relaciones <strong>de</strong> atributo.<br />

Al explorar la dimensión, po<strong>de</strong>mos seleccionar cada uno <strong>de</strong> los atributos o<br />

jerarquías y visualizar las propieda<strong>de</strong>s <strong>de</strong> sus miembros al pulsar el botón<br />

Propieda<strong>de</strong>s (Figura 15).


Figura 15. Dimensión con sus propieda<strong>de</strong>s.<br />

La dimensión Transporte requiere únicamente añadir el atributo nombre.<br />

En la dimensión Cliente crearemos las jerarquías que se ven en la figura 16.<br />

Figura 16. Dimensión cliente.


En la dimensión Empleado, se observa que ha creado una jerarquía por<br />

supervisor al <strong>de</strong>tectar la relación reflexiva supervisor-empleado. Se pue<strong>de</strong><br />

observar que el asistente ha i<strong>de</strong>ntificado supervisor como uso <strong>de</strong> atributo<br />

primario (ver icono en sección <strong>de</strong> atributos). Si vemos los datos <strong>de</strong> la<br />

jerarquía, ésta solo contiene números, los que representa la clave<br />

(empleadoKey). Si queremos que en vez <strong>de</strong> mostrar la clave muestre el<br />

nombre, cambiamos la propiedad NameColumn (Figura 17). A<strong>de</strong>más<br />

crearemos la jerarquía Puesto empleado.<br />

Figura 17. Dimensión empleado cambiada por la relación primarioclave.<br />

Por último está la dimensión temporal. Crearemos las jerarquías<br />

especificadas en la Figura 18. Observar que aunque la jerarquía Añotrimestre-mes-dia<br />

tiene el atributo mes, se ha puesto en NameColumn el<br />

MesAño para que salga el texto y no el número, también po<strong>de</strong>mos elegir el<br />

atributo MesAño. A<strong>de</strong>más se ha establecido la or<strong>de</strong>nación <strong>de</strong> cada atributo<br />

por key y no por name para que la or<strong>de</strong>nación sea númerica y no<br />

alfanumérica.


Figura 18. Dimensión Tiempo.<br />

1.2.1. Propieda<strong>de</strong>s <strong>de</strong> las dimensiones<br />

A continuación se comentarán algunas propieda<strong>de</strong>s <strong>de</strong> las dimensiones que<br />

permiten personalizar el comportamiento <strong>de</strong> las mismas.<br />

Propieda<strong>de</strong>s dimensión:<br />

AttributeAllMemberName: texto que se mostrará para el nivel superior<br />

(Todos)<br />

Default member: El miembro pre<strong>de</strong>terminado se utiliza cuando se evalúa<br />

una celda y no hay ningún otro miembro especificado para la dimensión<br />

(condición por la cuál se hace el browse <strong>de</strong> los datos). Esta es utilizada si la<br />

dimensión no está incluida en una consulta. Por <strong>de</strong>fecto el Analysis Server<br />

incluye todas las dimensiones en la consulta para que luego el usuario haga<br />

los filtros.<br />

Member keys unique: Indica si las claves <strong>de</strong> miembro son únicas a través<br />

<strong>de</strong> toda la dimensión.<br />

Member name unique: Indica si los nombres <strong>de</strong> miembros son únicos a<br />

través <strong>de</strong> toda la dimensión. Caso <strong>de</strong> una dimensión versionada.<br />

Storage Mo<strong>de</strong>: modo <strong>de</strong> almacenamiento Molap o Rolap.<br />

Propieda<strong>de</strong>s nivel:<br />

Member key column: Indica el nombre <strong>de</strong> la columna que contiene las<br />

claves <strong>de</strong> miembro.<br />

Member name column: Indica el nombre <strong>de</strong> la columna que contiene el<br />

nombre <strong>de</strong> los miembros. Este valor pue<strong>de</strong> ser un campo o una


concatenación <strong>de</strong> ellos ("producto"."producto_nombre" + ‘ ‘ +<br />

"producto"."producto_version")<br />

1.2.2. Elegir cómo or<strong>de</strong>nar los miembros <strong>de</strong> un nivel.<br />

Member key column tiene un número entero que referencia a cada<br />

miembro.<br />

Member name column es el título <strong>de</strong> la columna que se muestra en el<br />

cubo.<br />

Or<strong>de</strong>r by campo por el que se establece la or<strong>de</strong>nación.<br />

Por <strong>de</strong>fecto, las dos primeras propieda<strong>de</strong>s toman el mismo valor pero al<br />

in<strong>de</strong>pendizarlas permite establecer la or<strong>de</strong>nación, como se pue<strong>de</strong> observar<br />

en la dimensión Empleado (EmpleadoKey y EmpleadoApellidosNombre).<br />

1.3. Definir medidas y miembros calculados en los<br />

cubos<br />

Un cubo <strong>de</strong>be contener al menos una dimensión y una medida. La medida<br />

más simple correspon<strong>de</strong> a un campo numérico <strong>de</strong> la tabla <strong>de</strong> hechos. Pero<br />

es posible también crear medidas.<br />

Por ejemplo, vamos a crear la medida COMISION como el 15% <strong>de</strong> total <strong>de</strong><br />

la línea y el nº <strong>de</strong> pedidos como la cuenta <strong>de</strong> distintos pedidosID. Para ello<br />

se pulsa sobre la sección <strong>de</strong> Medidas y se indica Nueva medida. Se<br />

seleciona el atributo sobre el que se construirá la medida <strong>de</strong>rivada (por<br />

ejemplo PedidoID) y luego en propieda<strong>de</strong>s se establecerá la función <strong>de</strong><br />

agregación y su nombre (Ver Figura 19).<br />

Para el caso <strong>de</strong> la comisión, no nos <strong>de</strong>ja establecer la función <strong>de</strong> cálculo en<br />

la versión Standard Edition, lo que po<strong>de</strong>mos resolver, creando este campo<br />

en la vista <strong>de</strong>l origen <strong>de</strong> datos, a través <strong>de</strong> crear un nuevo cálculo con<br />

nombre en la tabla <strong>de</strong> hechos (Ver Figura 20) y luego agregarla al grupo <strong>de</strong><br />

medidas <strong>de</strong>l cubo.


Figura 19. Crear Medida Nº pedidos.<br />

Figura 20. Crear medida comisión.<br />

Por <strong>de</strong>fecto, la función <strong>de</strong> agregación <strong>de</strong> cualquier medida es la suma. Si<br />

quisieramos crear un indicador (ratio) que muestre el margen neto obtenido<br />

( = beneficio / total) para que sea correcto, se <strong>de</strong>be realizar la agregación<br />

antes <strong>de</strong> la división. Por ello es necesario crear un miembro calculado. La<br />

diferencia entre medida y miembro calculado es cuándo el cálculo se realiza.


Una medida <strong>de</strong>rivada se calcula antes que las agregaciones sean creadas y<br />

los valores son almacenados en el cubo. Un miembro calculado se calculan<br />

las agregaciones y los miembros no son almacenadas en el cubo.<br />

Como ejemplo vamos a calcular el margen neto que se ha conseguido en las<br />

ventas. Poner la propiedad Format String a Porcentaje. Y también po<strong>de</strong>is<br />

poner un código <strong>de</strong> colores para que se marque cuando está por encima o<br />

por <strong>de</strong>bajo <strong>de</strong> un <strong>de</strong>terminado valor.<br />

Figura 21. Crear métrica calculada margenNeto.<br />

También se pue<strong>de</strong> calcular la aportación <strong>de</strong> cada miembro <strong>de</strong> la dimensión<br />

producto al beneficio total, para saber qué productos son los que más<br />

beneficios nos aportan (Ver Figura 22).


Figura 22. Crear métrica aportación <strong>de</strong> cada producto al<br />

beneficio.<br />

Ahora vamos a calcular un valor promedio, por ejemplo el importe medio<br />

por pedido. Para ello hace falta usar la función count. Esta función cuenta<br />

filas y pue<strong>de</strong> ser utilizada sobre cualquier campo tanto numérico como no<br />

numérico, a diferencia <strong>de</strong>l SUM, MAX y MIN.<br />

Utilizaremos la dimensión <strong>de</strong>generada PedidoID para <strong>de</strong>finir la variable<br />

NumPedidos (ya hecho previamente). Y ahora creamos el miembro<br />

calculado:


Figura 23. Crear métrica aportación.<br />

Ahora vamos a calcular ratios, uno como la aportación <strong>de</strong> cada producto en<br />

el beneficio total y la misma aportación pero <strong>de</strong>sglosado por categoría.<br />

CREATE MEMBER CURRENTCUBE.[MEASURES].[Aportacion (Ratio) <strong>de</strong>l producto<br />

al beneficio total]<br />

AS [Measures].[Beneficio Total Linea]/<br />

(<br />

// The Root function returns the (All) value for the target<br />

dimension.<br />

Root<br />

( [Producto dim]<br />

),<br />

[Measures].[Beneficio Total Linea]<br />

),<br />

FORMAT_STRING = "Percent",<br />

VISIBLE = 1 ;<br />

CREATE MEMBER CURRENTCUBE.[MEASURES].[Aportacion (ratio) <strong>de</strong>l producto<br />

respecto a su categoría en relación al beneficio]<br />

AS Case<br />

When [Producto Dim].[Categproducto].CurrentMember.Level.Ordinal<br />

= 0<br />

Then 1<br />

End,<br />

Else [Measures].[Beneficio Total Linea]<br />

/<br />

( [Producto Dim].[ Categ-producto].CurrentMember.Parent,<br />

[Measures].[Beneficio Total Linea] )


FORMAT_STRING = "Percent",<br />

VISIBLE = 1 ;<br />

A continuación se observa el resultado. Daos cuenta que solo tiene sentido<br />

si se tiene a la dimension producto en una <strong>de</strong> las dimensiones. Aunque se<br />

pue<strong>de</strong>n añadir más para filtrar. Se observa que no tiene sentido si aparecen<br />

100%<br />

Figura 24. Resultado <strong>de</strong> la métrica aportación creada<br />

También po<strong>de</strong>mos crear el miembro calculado incremento <strong>de</strong> clientes.<br />

Previamente hay que crear la medida “DistintosClientes” creando una nueva<br />

medida sobre el campo clientekey <strong>de</strong> la tabla <strong>de</strong> hechos. Dado que solo<br />

pue<strong>de</strong> haber una medida con operador DISTINCTCOUNT, crearemos otro<br />

cubo con las dimensiones tiempo y cliente.<br />

CREATE MEMBER CURRENTCUBE.[MEASURES].[Crecimiento en cartera <strong>de</strong><br />

clientes]<br />

AS Case<br />

When [Tiempo Dim].[Año - Trimestre - Mes -<br />

día].CurrentMember.Level.Ordinal = 0<br />

Then "NA"<br />

When IsEmpty<br />

(<br />

(<br />

[[Tiempo Dim].[Año - Trimestre - Mes -<br />

día].CurrentMember.PrevMember,<br />

[Measures].[DistintosClientes]


)<br />

)<br />

Then Null<br />

Else (<br />

( [Tiempo Dim].[Año - Trimestre - Mes -<br />

día].CurrentMember, [Measures].[DistintosClientes] )<br />

-<br />

( [Tiempo Dim].[Año - Trimestre - Mes -<br />

día].PrevMember, [Measures].[DistintosClientes] )<br />

)<br />

/<br />

( [Tiempo Dim].[Año - Trimestre - Mes - día].<br />

PrevMember,[Measures].[DistintosClientes] )<br />

End,<br />

FORMAT_STRING = "Percent",<br />

NON_EMPTY_BEHAVIOR = { [DistintosClientes] },<br />

VISIBLE = 1 ;<br />

Figura 25. Resultado <strong>de</strong>l cubo para crecimiento <strong>de</strong> clientes<br />

1.3.1. Creación <strong>de</strong> conjuntos para consultas<br />

Uso <strong>de</strong> <strong>de</strong>finición <strong>de</strong> conjuntos para usar en dimensiones, ejemplo <strong>de</strong><br />

Clientes europeos


uso<br />

Otro ejemplo, es la selección <strong>de</strong> productos no obsoletos:


1.3.2. Propieda<strong>de</strong>s <strong>de</strong>l cubo<br />

Los cubos tienen una serie <strong>de</strong> propieda<strong>de</strong>s que se pue<strong>de</strong>n configurar para que<br />

influyan en el comportamiento <strong>de</strong> todo el cubo, y algunas propieda<strong>de</strong>s que no se<br />

pue<strong>de</strong>n modificar. Estas propieda<strong>de</strong>s se resumen en la tabla siguiente:<br />

Propiedad Definición<br />

AggregationPrefix<br />

Prefijo común que se utiliza para los nombres <strong>de</strong><br />

agregaciones<br />

Collation<br />

DefaultMeasure<br />

Description<br />

ErrorConfiguration<br />

I<strong>de</strong>ntificador <strong>de</strong> configuración regional (LCID) e<br />

indicador <strong>de</strong> comparación, separados por un carácter <strong>de</strong><br />

subrayado, como Latin1_General_C1_AS<br />

Expresión multidimensional (MDX) que <strong>de</strong>fine la medida<br />

pre<strong>de</strong>terminada para el cubo<br />

Descripción <strong>de</strong>l cubo, que se pue<strong>de</strong> mostrar en<br />

aplicaciones cliente<br />

Opciones <strong>de</strong> control <strong>de</strong> errores configurables para<br />

control <strong>de</strong> claves duplicadas, claves <strong>de</strong>sconocidas,<br />

límites <strong>de</strong> error, acciones al <strong>de</strong>tectarse un error, archivo<br />

<strong>de</strong> registro <strong>de</strong> errores y control <strong>de</strong> claves NULL<br />

EstimatedRows Número <strong>de</strong> filas estimadas en el cubo<br />

ID I<strong>de</strong>ntificador (Id.) único <strong>de</strong>l cubo<br />

Language I<strong>de</strong>ntificador <strong>de</strong> idioma <strong>de</strong>l cubo


Name Nombre <strong>de</strong>scriptivo <strong>de</strong>l cubo<br />

ProactiveCaching<br />

ProcessingMo<strong>de</strong><br />

ProcessingPriority<br />

Configuración <strong>de</strong> almacenamiento en caché automático<br />

para el cubo<br />

Indica si la indización y la agregación se <strong>de</strong>ben producir<br />

durante o <strong>de</strong>spués <strong>de</strong>l procesamiento; las opciones son<br />

Regular o Lazy<br />

Determina la prioridad <strong>de</strong> procesamiento <strong>de</strong>l cubo<br />

durante operaciones en segundo plano, como indización<br />

y agregaciones diferidas. El valor pre<strong>de</strong>terminado es 0.<br />

Indica si la caché <strong>de</strong> secuencias <strong>de</strong> comandos se <strong>de</strong>be<br />

ScriptCacheProcessingMo<strong>de</strong> generar durante o <strong>de</strong>spués <strong>de</strong>l procesamiento; las<br />

opciones son Regular y Lazy<br />

ScriptErrorHandlingMo<strong>de</strong><br />

Determina el control <strong>de</strong> errores; las opciones son<br />

IgnoreNone o IgnoreAll<br />

Source Vista <strong>de</strong> origen <strong>de</strong> datos utilizada para el cubo<br />

StorageLocation<br />

StorageMo<strong>de</strong><br />

Ubicación <strong>de</strong> almacenamiento <strong>de</strong>l sistema <strong>de</strong> archivos<br />

para el cubo. Si no se especifica ninguna ubicación, se<br />

hereda <strong>de</strong> la base <strong>de</strong> datos que contiene el objeto <strong>de</strong><br />

cubo<br />

Modo <strong>de</strong> almacenamiento para el cubo; los valores son<br />

MOLAP, ROLAP y HOLAP<br />

Visible Determina la visibilidad <strong>de</strong>l cubo

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!