manual - Universidad de Cantabria
manual - Universidad de Cantabria
manual - Universidad de Cantabria
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