SSRS + Mobile Reports + DAX (parte 1)

Con SQL Server 2016, Microsoft integro la «Datazen» dentro de Reporting Services con la denominación de Reportes Móviles.

Si nuestra solución de DW/BI utiliza SSAS (Analysis Services), especialmente la versión Tabular, como capa semántica, es interesante evaluar a DAX como language de consulta, y evitar pensar en DAX en los modelos y MDX en las consultas.

También puede ser una opción interesante tener SSAS Tabular detrás de nuestros reportes móviles, para mejorar tiempos de respuestas o aprovechar el poder de cálculo de DAX, reduciendo la complejidad en los reportes.

Los reportes móviles requieren acceder a los datos a través de «Shared Datasets», estos pueden normalmente construirse con Report Builder o SSDT.

Para trabajar con DAX, vamos a necesitar trabajar los «Shared Datasets» con SSDT.

Los pasos para un reporte sencillo serían:

1- Definir conexión

dax-ssrs-mobile_1

2- Crear un «Shared Dataset»

Para trabajar con DAX debemos configurar el Dataset para comandos DMX de manera de ingresar el comando DAX.

dax-ssrs-mobile_2

Esto nos permite ingresar la sentencia DAX, y si necesitamos trabajar con parámetros, para este ejemplo inicial, ingresamos un DAX sencillo sin parámetros.

EVALUATE
SUMMARIZECOLUMNS (
     Product[Color],
     Geography[Country Region Name],
     'Product Category'[Product Category Name],
     "Total Sales", [Internet Total Sales],
     "Total Units", [Internet Total Units]
 )

dax-ssrs-mobile_3

Creado el Dataset debemos desplegarlo en el servidor de reportes.

dax-ssrs-mobile_4

3- Crear Reporte móvil

Para crear el reporte debemos utilizar la aplicación «Mobile Report Publisher», e incorporar el Dataset construido con la sentencia DAX

dax-ssrs-mobile_5

Luego procedemos a construir el reporte, pudiendo quedar algo asi:

DAX-SSRS-MOBILE_6.PNG

 

 

 

 

 

Datazen + SSAS Multidimensional (DAX)

Para construir un dashboard en Datazen que acceda a datos en el servidor de SSAS Multidimensional debemos escribir sentencias MDX, con ciertas características como podemos ver en el articulo Datazen + SSAS Multidimensional (con MDX).

Otra alternativa, que en pruebas reales me ha sido muy ágil de implementar es escribir sentencias de consultas DAX en lugar de MDX.

SSAS Multidimensional acepta instrucciones DAX de consulta desde SQL 2012 SP1, pero en las ediciones Business Intelligence y Enterprise.

Primero debemos definir en Datasen un Data Source a la base de datos de SSAS.

image

Luego debemos agregar un o mas Data Views en la conexión para ser utilizados en nuestro Dashboard Para armar las sentencias DAX recomiendo utilizar DaxStudio.

image

EVALUATE
(
    SUMMARIZE (
        ‘Internet Sales’,
        ‘Date'[Date.Key0],
        ‘Date'[Date.Value],
        Product[Category.Key0],
        Product[Category],
        Product[Subcategory.Key0],
        Product[Subcategory],
        "Sales", ‘Internet Sales'[Internet Sales Amount]
    )
)
ORDER BY ‘Date'[Date.Key0]

Una vez que armamos la sentencia DAX que nos devuelva los campos requeridos para nuestro tablero, la copiamos a la configuración del Data View

image

image

Ahora desde Datazen Publisher podemos armar el dashboard

image

image

image

Datazen + SSAS Multidimensional (MDX)

Datazen nos permite conectarnos a fuentes de datos de SSAS, eso requiere que las sentencias de MDX tengan ciertas características.

Las MDX deben retornar las columnas de fecha y atributos de filtros o series como medidas de la sentencia MDX para que Datazen las interprete correctamente.

Creamos una conexión al SSAS en Datazen

image

Luego agregamos un Data View con la sentencia MDX

image

WITH

        MEMBER [Measures].[Fecha] AS [Date].Calendar.CURRENTMEMBER.MEMBER_VALUE

        MEMBER [Measures].[Categoria] AS [Product].[Category].CURRENTMEMBER.NAME

SELECT

        NONEMPTY

        (

                [Date].[Date].[Date].Members

                *

                [Product].[Category].[Category].Members

                ,

                [Internet Sales Amount]

        ) ON ROWS

        ,

        NON EMPTY

        {

                [Measures].[Fecha]

                ,

                [Measures].[Categoria]

                ,

                [Measures].[Internet Sales Amount]

        } ON COLUMNS

FROM

        [Adventure Works]

Este MDX tiene la fecha y categoría de productos que necesitamos como columnas

WITH

        MEMBER [Measures].[Fecha] AS [Date].Calendar.CURRENTMEMBER.MEMBER_VALUE

        MEMBER [Measures].[Categoria] AS [Product].[Category].CURRENTMEMBER.NAME

image

 

Luego desde Datazen Publisher podremos trabajar con el Data View

image

 

y construir nuestro dashboard

image

 

Otra opción seria construir sentencias DAX en lugar de MDX