El correcto Diseño y Desarrollo de las Dimensiones de un Cubo de Analysis Services (SSAS) es una de las tareas más importantes que tendremos que realizar como Consultores o Desarrolladores de Business Intelligence (BI), para conseguir una satisfactoria experiencia de usuario al navegar por nuestros Cubos.
Para el presente artículo, hemos utilizado Analysis Services 2014, para lo que hemos tenido que descargar la herramienta SQL Server Data Tools. Podría utilizarse también versiones anteriores de Analysis Services sin ningún problema. Como origen de datos hemos utilizado las Bases de Datos de Ejemplo de SQL Server 2012, en particular la Base de Datos AdventureWorksDW2012, que puede descargarse de forma gratuita.
La forma más fácil de comenzar el Diseño y Desarrollo de un nuevo Cubo de Analysis Services (SSAS) desde un Proyecto de Visual Studio, es utilizan el Asistente (Wizard) para la creación de un nuevo Cubo (New Cube). Si en el Wizard seleccionamos la opción Use existing tables, podremos seleccionar las Tablas que necesitemos como Tablas de Hechos y de Dimesiones (deberemos haber creado antes los Orígenes de Datos y los DSV con sus relaciones), así como seleccionar las Medidas (Measures) y Grupos de Medidas que deseemos para nuestro Cubo. Con todo esto, habremos obtenido un Cubo básico, que en muchos casos, incluso podremos Desplegar y Procesar para empezar a utilizar, aunque para dejarlo fino, seguro que tendremos que seguir trabajando en Visual Studio muchas más horas.
Editar una Dimensión, para ocultar y añadir Atributos
Si deseamos personalizar una Dimensión desde nuestro Proyecto de Visual Studio, podemos hacer doble-click en la misma en el Solution Explorer, para acceder al Editor de Dimensiones, y poder empezar a trabajar sobre ella. En nuestro caso vamos a editar la Dimensión Territorial (Dim Sales Territory).
El Asistente (Wizard) de creación de nuestro nuevo Cubo, ha creado una Dimensión Territorial muy sencilla, en la que tenemos un único Atributo con poco significado (es una clave).
Lo primero que vamos a hacer es ocultar este Atributo/Jerarquía, ya que carece de cualquier significado para el usuario. Para ello vamos a utilizar la Propiedad AttributeHierarchyVisible de dicho Atributo, que configuraremos a False. De este modo, dicho Atributo (que forma una Jerarquía de un único nivel de profundidad por sí solo, además de ser la Clave de esta Dimensión) quedará oculto como Atributo y como Jerarquía, pero seguirá estando disponible en cálculos MDX.
Realizado esto se quedará esta Dimensión vacía, sin ninguna Jerarquía. Para solucionar esta situación, Arrastraremos y Soltaremos (drag and drop) los atributos SalesTerritoyContry, SalesTerritoryGroup, y SalesTerritoryRegion, desde el panel Data Source View al panes Attributes. De este modo, estaremos creando tres nuevas Jerarquías. Si lo deseamos, podremos Procesar de nuevo esta Dimensión, para poder navegar por el Cubo y observar los resultados obtenidos.
Las Propiedades de Atributo OrderBy y NameColumn
Para continuar con esta introducción al Diseño de Dimensiones con Analysis Services (SSAS), vamos a personalizar otra Dimensión, para a través de dicho ejercicio, presentar las propiedades OrderyBy y NameColumn. Estas son dos de las Propiedades más utilizadas en los Atributos de las Dimensiones.
La Dimensión Temporal tal y cual ha sido creada por el Asistente (Wizard) también es demasiado básica, y necesitamos personalizarla. Como podemos ver, tiene definido un único Atributo, que es la Clave. En este caso, la Clave es un valor numérico que representa la fecha, por lo que en cierto modo tiene algo de significado (no se trata de un valor auto-numérico, aunque podría ser el caso), algo similar a lo que ocurría en el caso anterior.
Si navegamos por esta Dimensión Temporal tal cual está, observaremos el siguiente resultado. Valores numéricos, que si bien se podrían interpretar (no son auto-numéricos ni códigos sin sentido), al menos les falta una representación un poco más amigable.
Para corregirlo, en esta ocasión, en lugar de ocultar este Atributo/Jerarquía, vamos a establecer la propiedad NameColumn del Atributo al valor de la columna FullDateAlternateKey (podemos utilizar el botón de los puntos suspensivos). De este modo, la Clave de este atributo sigue siendo la misma columna, pero especificaremos una columna alternativa que deseamos utilizar para mostrar el valor de cada miembro de este atributo, y que sea más User-Friendly.
Para continuar, Arrastraremos y Soltaremos (drag and drop) los atributos CalendarYear y MonthNumberOfYear, desde el panel Data Source View al panes Attributes. De este modo, estaremos creando dos nuevas Jerarquías.
En el caso del Atributo Mont Number Of Year, volvemos a tener el mismo problema: su valor es un número, de 1 a 12, que representa el mes. Siendo correcto, aporta poco significado, si pensamos en Informes, y en el uso desde el punto de vista del usuario del negocio. Para corregirlo, vamos a establecer la propiedad NameColumn del Atributo al valor de la columna EnglishMontName.
Si Procesamos la Dimensión, y Navegamos sobre ella, podremos ver que ahora se muestran los nombres de los Meses, en lugar de un valor numérico entre 1 y 12. Sin embargo, nos hemos encontrado con nuevo problema: los meses aparecen por orden alfabético, lo cual, no tiene mucho sentido.
Para corregirlo, vamos establecer la propiedad OrderBy al valor Key. De este modo, los miembros de esta Jerarquía se ordenarán por el valor de la Clave, que se trata de un valor numérico entre 1 y 12, que cumple con las necesidades de ordenación que tenemos para dicha Jerarquía. Objetivo cumplido.
Despedida y Cierre
El presente artículo ha sido una breve introducción al trabajo con Dimensiones y Jerarquías en Analysis Services (SSAS), donde hemos aprovechado para presentar tres de las principales Propiedades de los Atributos de Dimensión, las Propiedades AttributeHierarchyVisible, OrderBy, y NameColumn, a través de varios ejemplos.
Poco más por hoy. Como siempre, confío que la lectura resulte de interés.