Terminada la creación de la dimensión de fechas, expuesta en el artículo anterior, en la presente entrega de esta serie de artículos, nos dedicaremos a construir el modelo de datos tabular, para lo cual crearemos, desde Visual Studio 2017 (SQL Server Data Tools para Visual Studio 2017), un nuevo proyecto de tipo Analysis Services Tabular, con el nombre VentasAnualesTabular.

 

Seguidamente, elegiremos el espacio de trabajo del servidor, que corresponderá a nuestro servidor\instancia de Analysis Services Tabular, así como el nivel de compatibilidad de la versión de Analysis Services que tenemos instalada, y que en este caso es SQL Server 2016.

 

Tras cumplimentar esta información introductoria, el proyecto será creado, ofreciéndonos Visual Studio el diseñador del modelo tabular, listo para comenzar con su desarrollo.

 

En primer lugar, necesitamos preparar una conexión contra la base de datos VentasAnuales, que actuará como fuente para las tablas del modelo tabular.

Utilizando la opción de menú Model | Import From Data Source, iniciaremos el asistente de conexión Table Import Wizard, en cuyo primer paso seleccionaremos el tipo de origen de datos al que nos conectaremos (Microsoft SQL Server).

 

En el siguiente paso, daremos un nombre a la conexión (cnVentasAnuales) dentro del cuadro de texto Friendly connection name; introduciremos el servidor\instancia de SQL Server en la que se aloja la base de datos dentro del cuadro de texto Server name; y desplegaremos la lista Database name, para seleccionar la base de datos VentasAnuales, desde la que importaremos la información.

 

Entrando a continuación en el paso Impersonation Information, estableceremos que la cuenta de servicio de Analysis Services Tabular, será la encargada de conectar con la fuente de datos, cuando realicemos la importación al modelo.

 

Seguidamente debemos elegir el modo en el que importaremos los datos: mediante una selección de tablas y vistas, o empleando una sentencia SQL. Para este ejemplo, utilizaremos la primera alternativa (selección en una lista de elementos), mientras que en el siguiente paso marcaremos las casillas correspondientes a las tablas que vamos a transferir al modelo: Cliente, Fecha, Producto y Ventas.

 

Al aceptar este paso y comenzar el proceso de importación de datos, es bastante probable que se produzca un error como el que muestra la siguiente figura, donde se nos informa que la cuenta asignada al servicio de Analysis Services Tabular, carece de los permisos necesarios para conectar con el origen de datos y proceder a la importación.

 

Para corregir esta situación, tomaremos nota de la cuenta de servicio que aparece en el mensaje de error, y así poder proceder a su configuración dentro del contexto de seguridad de SQL Server.

Una vía alternativa de averiguar la cuenta de servicio de Analysis Services Tabular, consiste en abrir SQL Server Configuration Manager, y anotar el valor que aparece para este servicio en la columna Log On As.

 

A continuación, nos situaremos en SSMS, y haremos clic en el nodo Security | Logins, seleccionando la opción New Login…

 

En la ventana de creación del Login, apartado General, escribiremos el nombre de la cuenta de servicio que hemos apuntado anteriormente.

 

Continuando dentro de esta ventana, en el apartado User Mapping, en la cuadrícula Users mapped to this login marcaremos la base de datos VentasAnuales, y en Database role membership for <Nombre base de datos> la casilla db_datareader (public se encuentra seleccionado por defecto).

 

Guardando los cambios de esta ventana, podemos retomar el proceso de importación de datos al modelo tabular, el cual debería ejecutarse ya sin errores.

 

Transcurrido un tiempo, que variará en función de la potencia de proceso de la máquina en la que estemos desarrollando este ejemplo, las tablas del modelo serán creadas, conteniendo los datos obtenidos desde el modelo relacional.

 

A pesar del elevado volumen de datos, la fase de modelado será muy sencilla de implementar, ya que se trata de un sistema de información bastante simple.

Comenzando por las métricas del modelo, nos situaremos en la tabla Ventas, donde crearemos dos medidas: una para contar la cantidad de ventas realizadas; y otra para sumar el importe de las mismas, utilizando las expresiones DAX mostradas a continuación, que hace uso, respectivamente de las funciones COUNTROWS y SUM de este lenguaje.

Ventas Realizadas :=
COUNTROWS ( Ventas )
ImporteVentas :=
SUM ( Ventas[Importe] )

 

Una de las tareas a realizar durante el desarrollo de un modelo tabular, consiste en seleccionar aquellas columnas y medidas que habilitaremos para su posterior análisis desde una herramienta cliente, como pueda ser Power BI. Esta operación tiene como objetivo evitar, desde una perspectiva analítica del sistema de información, que aquellas columnas del modelo que no resulten necesarias, puedan confundir a los usuarios encargados de construir los informes en Power BI. En los siguientes párrafos, daremos algunas indicaciones en este sentido sobre las tablas de nuestro modelo.

Situados en la tabla Ventas, seleccionaremos todas sus columnas y haremos clic derecho en la cabecera de cualquiera de ellas, seleccionando la opción Hide from Client Tools; esto hará que permanezcan inaccesibles desde Power BI o cualquier otra herramienta cliente.

 

También habríamos conseguido el mismo resultado, una vez seleccionadas las columnas, asignando en la ventana Properties, el valor True a la propiedad Hidden.

 

A continuación, pasaremos a la tabla Cliente, donde también ocultaremos las columnas ClienteID, Nombre y Apellido

 

En la tabla Producto, ocultaremos las columnas ProductoFilaID, CategoriaID, SubcategoriaID, ProductoID y Precio.

 

La tabla Fecha requerirá algo más de trabajo, ya que, además de ocultar las columnas AnualidadID y MesID, aplicaremos un formato dd/MM/yyyy (día/mes/año 4 dígitos) a la columna Fecha, a través de su propiedad Data Format, y ordenaremos la columna MesNombre en base a la columna MesID, mediante la propiedad Sort By Column.

 

A continuación, seleccionaremos la opción de menú Model | Model View | Diagram View, para acceder a la vista de diagrama del modelo. Desde este modo del diseñador, estableceremos las relaciones entre sus tablas, de la forma mostrada en la siguiente figura.

 

Cada una de estas relaciones se construye arrastrando, desde la tabla de hechos (Ventas), la columna correspondiente hasta la columna de la tabla de dimensión con la que vayamos a relacionarla.

Finalizaremos el desarrollo del modelo con su despliegue en SSAS Tabular, seleccionando la opción de menú Buid | Deploy Solution de Visual Studio; tarea esta, que al igual que la importación de datos, llevará un considerable tiempo en función del hardware en el que estemos desarrollando el ejemplo. Una vez terminado este proceso, iniciaremos SSMS y nos conectaremos al servidor SSAS Tabular, para revisar nuestro modelo recién creado.

 

Para comprobar su funcionamiento, abriremos una ventana de consultas, haciendo clic derecho sobre la base de datos tabular, y seleccionando la opción de menú New Query | DAX.

 

A continuación, escribiremos la siguiente sentencia DAX, que devuelve, mediante la función SUMMARIZECOLUMNS un conjunto de datos basado en la cantidad de ventas realizadas por año y categoría de producto, al que aplicaremos la función FORMAT.

EVALUATE

 (
    SUMMARIZECOLUMNS (
        Fecha[Anualidad],
        Producto[Categoria],
        «Ventas realizadas»FORMAT ( [Ventas Realizadas], «#,#» )
    )
)

 

Realizada esta comprobación, podemos dar por concluido el desarrollo del modelo tabular. En el siguiente artículo, que concluye esta serie, abordaremos la construcción de informes con Power BI, mediante la conexión al modelo que acabamos de crear.