Capítulo 9 SSAS (SQL Server Analysis Services)

SSAS es una herramienta OLAP integrada en SQL Server, el sistema de gestión de bases de datos profesional de Microsoft.

Usando esta herramienta, a partir de los datos en forma de tablas en SQL Server, generaremos cubos con hechos y dimensiones en Analysis Services, que podrán ser consultados mediante herramientas de usuario final.

Para ampliar información sobre esta herramienta una buena referencia es el libro de Harinath et al. (2012). El libro está basado en la versión 2012 pero, en los temas tratados aquí, no hay diferencia sustancial con versiones posteriores.

Objetivos del capítulo

  • Usar una herramienta OLAP profesional.

  • Conocer el funcionamiento básico de SSAS.

  • Entender el desarrollo de esquemas multidimensionales.

  • Definir los elementos de un esquema multidimensional.

  • Entender la estructura y la implementación de los cubos OLAP.

  • Acceder a cubos OLAP mediante una herramienta de usuario final.

9.1 Punto de partida

El punto de partida es la BD OLAP en SQL Server resultado del capítulo 8, la que habíamos nombrado con el nombre de la provincia asignada y el sufijo "_olap" (p.e., en mi caso, granada_olap). Esta BD contiene tres tablas, dos dimensiones (Cuándo, Dónde) y los hechos (Padrón), con el sufijo del nombre de la provincia asignada (p.e., en mi caso cuando_granada, donde_granada y padron_granada).

Si dispones de esa BD, puedes pasar al apartado 9.2 para definir el proyecto SSAS. En caso contrario, en el resto de este apartado, se explica cómo obtenerla a partir de las tablas en formato CSV obtenidas en los capítulos 3 o 6.

9.1.1 Crear la BD

Los pasos necesarios para crear una BD en SQL Server se encuentran en el apartado 8.1.1. Su nombre será el de la provincia asignada con el sufijo "_olap".

9.1.2 Importar archivos CSV

Para cada uno de los archivos en formato CSV obtenidos en los capítulos 3 o 6, cada uno con una tabla, repetiremos los pasos que se describen a continuación.

Desde el menú contextual de nuestra BD en SSMS, pulsamos sobre Tasks > Import Flat File.

Se inicia Import Flat File Wizard, que nos explica en la pantalla inicial su funcionalidad. Pulsando sobre Next, accedemos a la pantalla de definición de la fuentes de datos (figura 9.1)

Definición de la fuente de datos.

Figura 9.1: Definición de la fuente de datos.

En el campo Location of file to be imported, pulsando el botón Browse, seleccionamos el archivo con los datos en formato CSV. Indicamos el nombre de la tabla en el campo New table name (debe tener como sufijo en nombre de la provincia) y pulsamos sobre Next. Accedemos a la pantalla de la figura 9.2, donde podemos ver los datos de la tabla.

Definición de las columnas de la fuente de datos.

Figura 9.2: Definición de las columnas de la fuente de datos.

Pulsamos sobre el botón Next para acceder a la definición de las columnas, como se muestra en la figura 9.3, donde nos aseguraremos de que la llave primaria tenga tipo entero y el resto de columnas sean de tipo cadena.

Modificar el tipo de las columnas.

Figura 9.3: Modificar el tipo de las columnas.

Por último, nos muestra las operaciones que vamos a realizar (figura 9.4) y, al pulsar sobre Finish las lleva a cabo y nos muestra su resultado.

Resumen de la operación.

Figura 9.4: Resumen de la operación.

En principio todo debería ir bien. Si hay algún error, habría que revisar la codificación de los archivos CSV.

9.2 Proyecto, fuentes de datos y vistas

En este apartado vamos a crear un proyecto SSAS. En el nuevo proyecto vamos a comenzar definiendo la fuente de datos a usar (la BD descrita en el apartado 9.1) y sobre la fuente de datos definiremos una estructura llamada vista.

9.2.1 Crear un proyecto SSAS

Al igual que para SSIS, para crear un proyecto SSAS necesitamos abrir Visual Studio 2019. En la figura 9.5 se muestra la pantalla de inicio.

Pantalla de inicio de Visual Studio 2019.

Figura 9.5: Pantalla de inicio de Visual Studio 2019.

Al pulsar sobre Crear un proyecto, podemos elegir la plantilla del tipo de proyecto que vamos a crear (figura 9.6).

Elección de la plantilla del tipo de proyecto.

Figura 9.6: Elección de la plantilla del tipo de proyecto.

Seleccionamos Proyecto multidimensional y de minería de datos de Analysis Services y pulsamos sobre Siguiente.

Nombre y carpeta del proyecto.

Figura 9.7: Nombre y carpeta del proyecto.

A continuación (figura 9.7), podemos introducir el nombre del proyecto, la carpeta donde se almacenará y el nombre de la solución (solo si desmarcamos la opción para situarlos en distintas carpetas). Podemos tener varios proyectos asociados al mismo tema de trabajo, en este caso proyectos SSAS. Los proyectos se pueden agrupar bajo el concepto de solución, que se definiría aquí. En este caso, no es necesario, podemos dejar la solución y el proyecto en la misma carpeta.

En este caso el criterio que vamos a seguir es:

  • Asignar al proyecto el nombre de la provincia, el usuario, el tema y la herramienta que vamos a usar (p.e., en mi caso granada-jsamos-olap-ssas).

En la figura 9.8, se muestra la ventana de inicio del nuevo proyecto.

Inicio del proyecto.

Figura 9.8: Inicio del proyecto.

En la parte derecha de la ventana se encuentran las ventanas Explorador de soluciones, donde definiremos los componentes del proyecto, y Propiedades, donde se muestran las propiedades del elemento seleccionado. En la parte de la izquierda, aparece la ventana de Cuadro de herramientas de SSIS, que podemos cerrar porque no es aplicable a esta herramienta. En la parte central está el área de trabajo, donde se mostrará el contenido de los elementos del proyecto con los que estemos trabajando.

9.2.2 Definición de fuentes de datos

Lo primero que tenemos que hacer es definir las fuentes de donde obtendremos los datos. La definición se realiza desde el menú contextual del apartado Orígenes de datos de la ventana Explorador de soluciones (figura 9.9), pulsando sobre la opción New Data Source.

Nueva fuente de datos.

Figura 9.9: Nueva fuente de datos.

Se abre la ventana del Data Source Wizard que nos ayuda en la definición. Se inicia con una pantalla de presentación donde nos explica que una fuente de datos es una conexión a nuestros datos y que también necesitaremos definir una vista para completar las funcionalidades que necesitamos. Pulsando sobre el botón Siguiente nos muestra las conexiones actualmente definidas (figura 9.10).

Conexiones a fuentes de datos.

Figura 9.10: Conexiones a fuentes de datos.

Vamos a definir una nueva conexión a la BD OLAP. Pulsamos sobre el botón Nueva (figura 9.10), y se abre la ventana donde tenemos que seleccionar el nombre del servidor y la BD OLAP, en mi caso granada_olap (figura 9.11).

Conexion manager.

Figura 9.11: Conexion manager.

Una vez definida la conexión, pulsamos sobre el botón Siguiente para continuar. En el apartado Impersonation Information, definimos con qué credenciales accede Analysis Services a la fuente de datos, en este caso, a la BD. De entre la formas posibles, la que he encontrado que no presenta problemas es la primera: Utilizar un nombre de usuario y una contraseña de Windows específicos (figura 9.12). En el entorno de prácticas33 he creado con este fin el usuario ssas de contraseña ssas.

Usuario y contraseña de la conexión.

Figura 9.12: Usuario y contraseña de la conexión.

Al pulsar sobre el botón Siguiente, aparece la ventana donde se muestra la cadena de conexión definida y tenemos la posibilidad de darle un nombre a la fuente de datos. Dejamos el nombre que tiene por defecto.

9.2.3 Permisos del usuario de suplantación

En el apartado Impersonation Information hemos definido que Analysis Services accederá a la fuente de datos con las credenciales de un usuario Windows, en concreto, en el entorno de prácticas, el usuario ssas. Por tanto, para poder realizar el acceso, este usuario ha de tener permiso de acceso a la BD a la que pretendemos acceder, en mi caso granada_olap.

Para asociar un usuario a una BD utilizaremos SSMS. Una vez conectados al servidor Database Engine, en el menú contextual de Security > Logins, elegimos la opción New > Login (figura 9.13).

Nuevo login a la BD.

Figura 9.13: Nuevo login a la BD.

En la ventana que se abre, estando seleccionada la opción Windows authentication, pulsamos sobre el botón Search: se abre una nueva ventana para seleccionar el usuario, en el campo Escriba el nombre de objeto para seleccionar, escribimos el nombre del usuario, en este caso el valor ssas, y pulsamos sobre el botón Comprobar nombres, el resultado se muestra en la figura 9.14: añade como prefijo al nombre del usuario el nombre del servidor. Pulsamos sobre Aceptar para validar la selección.

Selección del nuevo usuario de la BD.

Figura 9.14: Selección del nuevo usuario de la BD.

Una vez definido el usuario, pulsamos sobre la sección User mapping en la columna de la izquierda, seleccionamos la BD y el permiso de lectura db_datareader (figura 9.15).

Asignar permiso de lectura para el nuevo usuario de la BD.

Figura 9.15: Asignar permiso de lectura para el nuevo usuario de la BD.

Con esto, al pulsar sobre OK, el usuario de Analysis Services tendrá acceso de lectura a la BD que vamos a utilizar como fuente de datos.

9.2.4 Definición de vistas

En lugar de trabajar directamente sobre las fuentes de datos, aunque vayamos a utilizar todos los datos de la fuente, debemos definir una vista sobre los datos en el apartado Vistas del origen de datos que, si es necesario, nos permitirá completar su definición.

La definición se realiza desde el menú contextual del apartado Vistas del origen de datos, también en la ventana Explorador de soluciones (figura 9.16), pulsando sobre la opción Nueva vista del origen de datos.

Nueva vista del origen de datos.

Figura 9.16: Nueva vista del origen de datos.

Asistente para vistas del origen de datos

En este caso, se abre la ventana del Asistente para vistas del origen de datos. Pulsando sobre el botón Siguiete nos muestra las fuentes de datos actualmente definidas (figura 9.17).

Conexiones a fuentes de datos.

Figura 9.17: Conexiones a fuentes de datos.

Desde esta ventana también podríamos definir la fuente de datos pero, en este caso, acabamos de hacerlo. Seleccionamos nuestra fuente de datos y pulsamos sobre el botón Siguiente.

La herramienta permite detectar automáticamente relaciones entre las tablas de la BD en función de uno entre varios criterios que considera (figura 9.18).

Elección del criterio para establecer relaciones entre las tablas.

Figura 9.18: Elección del criterio para establecer relaciones entre las tablas.

En el caso del ejemplo, se ha utilizado el mismo nombre de la llave primaria en las llaves externas, por tanto, el primer criterio sería el adecuado. Pulsamos sobre Siguiente y, a continuación, podemos seleccionar las tablas sobre las que vamos a trabajar, en este caso seleccionamos todas las tablas de la BD (figura 9.19).

Elección del criterio para establecer relaciones entre las tablas.

Figura 9.19: Elección del criterio para establecer relaciones entre las tablas.

Al pulsar Siguiente, por último, nos presenta los elementos seleccionados y nos ofrece la posibilidad de darle un nombre a la vista, en este caso le daremos el nombre de la provincia asignada, sin el sufijo, en mi caso Granada. Como resultado, podemos ver una representación gráfica de las tablas incluidas en la vista.

Definición de llaves primarias

Aunque se cumple el criterio de nombres de las llaves primarias y llaves externas que hemos seleccionado para establecer las relaciones automáticamente, no las ha obtenido todas. Definiremos las llaves y las relaciones que faltan manualmente.

Para definir la llave primaria de una tabla, seleccionamos el campo o conjunto de campos que la componen y, en el menú contextual, seleccionamos la opción Establecer clave principal lógica (figura 9.20). Como resultado, se muestra un icono de una llave a la izquierda del nombre del campo.

Definir la llave primaria de una tabla.

Figura 9.20: Definir la llave primaria de una tabla.

Definición de relaciones

Por último, para definir las relaciones entre las tablas, pulsamos-arrastramos-soltamos el nombre de la llave externa en una tabla sobre el nombre de la llave primaria de la tabla correspondiente34 (en este caso, desde padron_granada hacia las otras tablas). El resultado de la definición, se muestra en la figura 9.21.

Relaciones entre las tablas.

Figura 9.21: Relaciones entre las tablas.

Ejercicio 9.1 Usando los criterios de nomenclatura indicados en los apartados anteriores, crea un proyecto SSAS, define como fuente de datos la BD OLAP (autoriza al usuario ssas para que tenga acceso a la fuente de datos), define una vista sobre la fuente de datos, en la vista define las llaves primarias y relaciona las tablas (captura una pantalla donde se muestren las tablas de la vista).

9.3 Definición de dimensiones

La definición de las dimensiones se lleva a cabo desde el menú contextual del apartado Dimensiones, en la ventana Explorador de soluciones (figura 9.22), pulsando sobre la opción Nueva Dimensión.

Nueva dimensión.

Figura 9.22: Nueva dimensión.

9.3.1 Asistente para dimensiones

Se abre la ventana del Asistente para dimensiones. Pulsando sobre el botón Siguiente nos muestra varias posibilidades: podemos definir una dimensión a partir de tablas previamente existentes o crear una tabla según un patrón a determinar de entre los considerados por la herramienta. Se muestran patrones para la dimensión tiempo que, generalmente, siempre está presente en los diseños (para generarla en la fuente de datos o en el servidor Analysis Services). En el campo de selección aparecen muchos más patrones para varios tipos de dimensiones. En nuestro caso, partimos de una tabla ya existente, por tanto, dejamos seleccionada la opción por defecto, como se muestra en la figura 9.23, y pulsamos sobre Siguiente.

Dimensión a partir de una tabla existente o a partir de un patrón.

Figura 9.23: Dimensión a partir de una tabla existente o a partir de un patrón.

A continuación, seleccionamos la vista y la tabla de la dimensión (figura 9.24). En este caso, seleccionamos la tabla de la dimensión Dónde.

Selección de la tabla y su clave primaria.

Figura 9.24: Selección de la tabla y su clave primaria.

Al seleccionar la tabla, también se definen el contenido del campo Columnas clave con la llave primaria de la tabla. Es el valor adecuado en nuestro caso. Si no definiéramos llaves generadas, aquí podríamos indicar las columnas que forman la llave primaria y, en caso de estar formada por más de una columna, deberíamos indicar una columna que las representase (Name column). Asimismo, en caso de tener un diseño en copo de nieve, en este apartado nos permitiría seleccionar el resto de tablas de la dimensión siempre que estuvieran relacionadas con esta. Pulsamos sobre Siguiente.

En la siguiente pantalla, seleccionamos los campos de la tabla que formarán parte de la dimensión. Si es necesario, aquí se pueden renombrar los campos. Al igual que se consideran patrones para las dimensiones, también se hace para los campos: aquí se puede asociar cada campo con un patrón. En este caso los seleccionamos todos (figura 9.25), dejamos el tipo de campo por defecto (Regular) y pulsamos sobre Siguiente.

Selección de campos de la dimensión.

Figura 9.25: Selección de campos de la dimensión.

A continuación, antes de acabar, nos muestra la definición realizada y ofrece la posibilidad de cambiar el nombre a la dimensión. Cambiamos el nombre por defecto añadiendo la tilde, en mi caso, Dónde Granada y pulsamos sobre Finalizar (figura 9.26).

Campos y nombre de la dimensión.

Figura 9.26: Campos y nombre de la dimensión.

Como resultado, en el área de diseño de la aplicación, se cargan los elementos de la dimensión para que podamos acabar de definirla (figura 9.27). Lo que nos falta por definir de la dimensión son las jerarquías.

Diseño de la dimensión.

Figura 9.27: Diseño de la dimensión.

9.3.2 Definición de jerarquías

Aunque no se muestran explícitamente, al incluir un campo en una dimensión se define una jerarquía asociada a él, compuesta por dos niveles: el nivel definido por el propio campo y el nivel Todo. Desde la ventana Propiedades del campo, mediante la propiedad AttributeHierarchyEnabled, se puede configurar para que no genere la jerarquía asociada al campo. De hecho, cuando un campo se incluye en una jerarquía definida explícitamente, la herramienta avisa y recomienda que se evite tener también jerarquía de campos. En este caso, vamos a definir jerarquías explícitas pero no vamos a deshabilitar las jerarquías de los campos incluidos en ellas.

Para definir una jerarquía compuesta por más de un campo, pulsamos-arrastramos-soltamos un campo de la zona Atributos sobre la zona Jerarquías (como indica en la propia pantalla). En este caso, hacemos esta operación para el campo Provincia. El resultado se muestra en la figura 9.28.

Diseño de una jerarquía.

Figura 9.28: Diseño de una jerarquía.

Renombramos la jerarquía como Geografía (pulsando sobre Jerarquía) y añadimos los campos Comarca y Municipio, desde la granularidad más gruesa hasta la más fina35 (figura 9.29).

Diseño de la jerarquía y mensaje de aviso.

Figura 9.29: Diseño de la jerarquía y mensaje de aviso.

Al añadir más de un campo a la jerarquía, aparece una señal de aviso a la izquierda de su nombre: nos indica que no se han definido relaciones entre los niveles y esto puede perjudicar el tiempo de respuesta.

Distingue entre jerarquías naturales y no-naturales. En las jerarquías naturales, dado el valor de un campo, el valor de los campos de nivel superior están determinados. En las no-naturales, no ocurre esto necesariamente: dado el valor de un campo, podría estar relacionado con más de un valor de los campos de nivel superior.

En nuestro caso todas las jerarquías son naturales excepto aquella en la que intervienen Nivel habitantes y Municipio. En caso de definir alguna jerarquía no-natural, avisa mediante el símbolo a la izquierda de su nombre, pero la trata sin problemas, solo que con las jerarquías naturales trabaja de una manera más eficiente.

Para definir jerarquías naturales, debemos definir relaciones entre los campos. La definición se lleva a cabo desde la hoja Relaciones de atributo.

9.3.3 Definición de relaciones

Las relaciones existentes entre los campos se muestran en la figura (figura 9.30), al pulsar sobre la hoja Relaciones de atributo.

Relaciones entre campos de la dimensión.

Figura 9.30: Relaciones entre campos de la dimensión.

Las relaciones se muestran en la zona inferior derecha: existe una relación 1:N entre cada uno de los campos de la tabla y la llave primaria (la llave primaria determina al resto de campos de la tabla). En la zona superior se muestra una representación gráfica donde se han representado de forma distinta los campos que hemos incluido en la jerarquía.

Para definir una nueva relación, desde el menú contextual de un campo seleccionamos Nueva relación de atributo. En la figura 9.31, vamos a definir una nueva relación para el campo Municipio.

Nueva relación entre campos.

Figura 9.31: Nueva relación entre campos.

En la ventana de definición (figura 9.32), el campo Municipio aparece en el apartado Atributo de origen, en el apartado Atributo relacionado seleccionamos un campo determinado por el Atributo de origen, en este caso el campo Comarca36.

Definición de la nueva relación entre campos.

Figura 9.32: Definición de la nueva relación entre campos.

Podemos definir el tipo de relación entre los campos. En particular, si es una relación flexible o rígida, según pueda o no cambiar a lo largo del tiempo. Esta característica es relevante para el mantenimiento incremental de las dimensiones. En función del tipo, usará unas u otras estructuras internas de almacenamiento. En este caso, como no vamos a realizar operaciones de mantenimiento de las dimensiones, podemos seleccionar la opción Rígida (no cambiará con el tiempo).

Una vez definida la relación, la incluye en la lista de relaciones y elimina la relación inicial entre la llave primaria y el Atributo relacionado porque se aplica la propiedad transitiva de la relación definida (la relación inicial es redundante). Representa las relaciones gráficamente en la parte superior de la zona de diseño. Las relaciones rígidas se representan rellenas de color negro.

En la figura 9.33, se muestran las relaciones definidas entre los campos que forman la jerarquía definida. También se ha definido la relación entre Provincia y Comunidad Autónoma (que no se ha incluido en la jerarquía porque estamos trabajando con datos de una sola provincia), observamos que, por no formar parte de la jerarquía, lo representa dentro de la representación de Provincia.

Nuevas relaciones definidas entre campos.

Figura 9.33: Nuevas relaciones definidas entre campos.

9.3.4 Explorador

Cuando definimos una dimensión, desde la hoja Explorador, podemos comprobar su funcionamiento. Inicialmente aparece un aviso de que no tenemos acceso a la BD, la razón es que no existe. Previamente tenemos que procesar la dimensión, pulsando sobre el icono de la operación Procesar (figura 9.34), disponible en varias páginas de la aplicación.

Procesar una dimensión.

Figura 9.34: Procesar una dimensión.

Al pulsarla aparece el aviso de que necesita desplegar el proyecto en el servidor, por estar desactualizado. A continuación, nos muestra la ventana de configuración de la dimensión a procesar (figura 9.35). En este caso, las opciones por defecto son adecuadas y pulsamos sobre el botón Run.

Configuración del procesamiento de una dimensión.

Figura 9.35: Configuración del procesamiento de una dimensión.

A continuación, nos muestra la ventana con los resultados del proceso para cada uno de los campos y jerarquías (figura 9.36).

Resultado del procesamiento de una dimensión.

Figura 9.36: Resultado del procesamiento de una dimensión.

Hasta este momento hemos estado accediendo a los datos con nuestras credenciales. Al procesar los datos, es Analysis Services quien accede. Si no hemos configurado adecuadamente la forma de suplantación (apartado 9.2.3), seguramente tengamos errores en el procesamiento de las dimensiones.

Una vez procesada, para poder ver el resultado, tenemos que conectarnos (o volver a conectarnos) al servidor, pulsando sobre Volver a conectar (figura 9.37).

Conexión con el servidor para ver la dimensión.

Figura 9.37: Conexión con el servidor para ver la dimensión.

El resultado se muestra en la figura 9.38. En el campo Jerarquía podemos seleccionar la jerarquía a mostrar.

Instancias de los niveles de una jerarquía de la dimensión.

Figura 9.38: Instancias de los niveles de una jerarquía de la dimensión.

Ejercicio 9.2 Define las dimensiones con las jerarquías y relaciones entre los campos (para cada dimensión captura tres pantallas: una donde se muestre la definición de las jerarquías, otra donde se vean las relaciones y otra de la ventana Explorador desplegando al menos una instancia de cada nivel de una jerarquía).

Para la jerarquía con los campos Nivel habitantes y Municipio explica por qué no es natural.

9.4 Definición del cubo

La definición del cubo se realiza desde el menú contextual del apartado Cubos, en la ventana Explorador de soluciones (figura 9.39), pulsando sobre la opción Nuevo Cubo.

Nuevo cubo.

Figura 9.39: Nuevo cubo.

9.4.1 Asistente para cubos

Se abre la ventana del Asistente para cubos. Pulsando sobre el botón Siguiente nos muestra varias posibilidades: podemos definir un cubo a partir de tablas previamente existentes; crear un cubo vacío o crear un cubo según un patrón a determinar de entre los de los ejemplos que se distribuyen con la herramienta. En nuestro caso, partimos de una tabla ya existente, por tanto, dejamos seleccionada la opción por defecto, como se muestra en la figura 9.40, y pulsamos sobre Siguiente.

Definición de un cubo a partir de una tabla.

Figura 9.40: Definición de un cubo a partir de una tabla.

A continuación, seleccionamos la vista y la tabla de hechos (figura 9.41). En mi caso, la tabla padron_granada.

Selección de la tabla de hechos.

Figura 9.41: Selección de la tabla de hechos.

Nos muestra las posibles medidas que se pueden incluir en el cubo (figura 9.42). En concreto, los campos que habíamos definido como medidas en la tabla de hechos (no incluye las llaves externas de las dimensiones) y una nueva medida, cuyo nombre es el nombre de la tabla de hechos con el prefijo “Recuento”, que es un contador de filas: en los informes representará las filas de los hechos que se agregan para obtener el resultado.

Medidas del cubo.

Figura 9.42: Medidas del cubo.

Seleccionados todas la medidas y pulsamos sobre Siguiente. A continuación, seleccionamos las dimensiones que formarán parte del cubo. En este caso, deben estar seleccionadas las dimensiones que hemos definido (figura 9.43), pulsamos sobre Siguiente.

Dimensiones del cubo.

Figura 9.43: Dimensiones del cubo.

Antes de acabar, nos muestra la definición realizada y ofrece la posibilidad de cambiar el nombre al cubo. Pulsamos sobre Finalizar (figura 9.44).

Medidas, dimensiones y nombre del cubo.

Figura 9.44: Medidas, dimensiones y nombre del cubo.

Como resultado, en el área de diseño de la aplicación, se muestran la definiciones realizadas (Medidas y Dimensiones), y las tablas fuente del cubo (figura 9.45). La cabecera de cada tabla tiene un color distinto según sea de dimensión o de hechos. En esta sección podemos definir el resto de elementos del cubo que permite Analysis Services, en concreto, las medidas calculadas.

Tablas fuente del cubo.

Figura 9.45: Tablas fuente del cubo.

9.4.2 Explorador

Para poder acceder a los metadatos de la definición del cubo (por ejemplo, para definir medidas calculadas a partir de otras), previamente tenemos que procesarlo (pulsando sobre Procesar desde cualquier página del diseño del cubo).

Cuando procesamos el cubo, podemos consultar su contenido en la página Explorador (figura 9.46). Explorador es una herramienta de consulta para desarrolladores que permite utilizar todos los elementos del cubo y probar su funcionalidad para definir informes.

Visualización de los datos del cubo.

Figura 9.46: Visualización de los datos del cubo.

Si tenemos Excel instalado, permite pasarle los datos del cubo para realizar en él las consultas de prueba mediante una tabla dinámica.

9.4.3 Medidas calculadas

Vamos a definir medidas calculadas a partir de las medidas que hemos definido en el cubo. Se definen desde la página Cálculos del diseño del cubo (figura 9.47).

Definición de medidas calculadas.

Figura 9.47: Definición de medidas calculadas.

Para definir una nueva medida, pulsamos sobre Nuevo miembro calculado en la barra de herramientas. En el campo Nombre introducimos el nombre de la medida, en este caso Habitantes.

En el campo Jerarquía primaria debemos asegurarnos que esté seleccionado el valor Measures: también se pueden definir elementos calculados en las dimensiones. Nos vamos a limitar a definir una medida calculada que deberá estar con el resto de medidas.

En el campo Expresión tenemos que definir la expresión que permita obtener los valores de la nueva medida a partir de las medidas previamente definidas. Podemos usar las definiciones previas del cubo, disponibles en el apartado Metadatos, en la parte inferior izquierda de la ventana. Si no se encuentran disponibles, previamente debemos procesar el cubo. En particular, cuando queramos definir una medida a partir de otra medida calculada, deberemos procesar el cubo.

Ejercicio 9.3 Define el cubo que incluya como medidas calculadas: Habitantes, Densidad_Ha (densidad de habitantes por hectárea) y Densidad Km2 (densidad de habitantes por Km2). Captura dos pantallas: una donde se muestre la definición de la medida Densidad Km2 y otra de la ventana Explorador desplegando un campo de cada dimensión y todas la medidas.

9.5 Acceso al cubo en el servidor

Una vez definido y procesado el proyecto, podemos acceder a los datos en el servidor desde otras herramientas de consulta orientadas a los decisores. En particular, vamos a ver cómo acceder a Analysis Services desde Power BI.

9.5.1 BD en Analysis Services

Cuando procesamos el cubo, este se define y almacena en el servidor Analysis Services. Desde Object Explorer de SSMS, pulsando sobre Connect > Analysis Services (figura 9.48), se abre la ventana de conexión y, pulsando sobre Connect, permite conectarnos con el servidor y ver su contenido.

Conectar con el servidor Analysis Services.

Figura 9.48: Conectar con el servidor Analysis Services.

En concreto, comprobamos que hay una BD con el nombre de nuestro proyecto SSAS y, si la vamos desplegando, podemos ver que contiene los elementos definidos en él (figura 9.49).

Elementos en la BD de Analysis Services.

Figura 9.49: Elementos en la BD de Analysis Services.

Con las credenciales de usuario adecuadas, esta BD es accesible desde cualquier herramienta de consulta que tenga conectividad con Analysis Services.

9.5.2 Conexión desde Power BI

Para acceder a la BD de Analysis Services desde Power BI, desde un nuevo archivo de Power BI (Create a new report o al abrir la herramienta) , pulsamos sobre Datos > Obtener Datos > Analysis Services (figura 9.50).

Obtener datos de Analysis Services desde Power BI.

Figura 9.50: Obtener datos de Analysis Services desde Power BI.

En la ventana que se abre, tenemos que indicar el nombre del servidor y de la BD a la que nos queremos conectar y, además, seleccionar la opción Conectarse en directo (figura 9.51).

Obtener datos de Analysis Services desde Power BI.

Figura 9.51: Obtener datos de Analysis Services desde Power BI.

El nombre del servidor y de la BD lo podemos obtener de SSMS: al pulsar sobre Connect > Analysis Services, en la ventana que se abre, aparece el nombre del servidor y podemos copiarlo.

En el navegador (figura 9.52), seleccionamos el cubo al que nos queremos conectar. Solo nos muestra los nombres de las dimensiones y las medidas.

Navegador para conectar con Analysis Services desde Power BI.

Figura 9.52: Navegador para conectar con Analysis Services desde Power BI.

Una vez establecida la conexión, en el apartado Campos (figura 9.53), están disponibles los elementos del cubo para definir las consultas sobre ellos.

Campos en Power BI.

Figura 9.53: Campos en Power BI.

Ejercicio 9.4 Desde Power BI, conecta con el cubo en Analysis Services y realiza un informe libre que incluya medidas calculadas (captura una pantalla y explica el nivel de detalle de los datos que representa).

Bibliografía

Harinath, Sivakumar, Ronald Pihlgren, Denny Lee, and John Sirmon. 2012. Professional Microsoft Sql Server 2012 Analysis Services with MDX and DAX. Wrox Press.


  1. En caso de trabajar con una instalación independiente (no con el entorno de prácticas), recomiendo esta solución: crear un usuario Windows que, por supuesto, puede tener cualquier nombre y contraseña, los que se indiquen en este apartado.↩︎

  2. En caso de equivocarnos y hacerlo a la inversa, abre una ventana, nos indica que la relación se establece en sentido contrario y nos da opción a cambiarla.↩︎

  3. La granularidad se indica mediante un icono a la izquierda del nombre del campo.↩︎

  4. Un municipio está en una única comarca, dado el municipio tenemos su comarca.↩︎