Textos dinámicos con DAX

Siempre me ha gustado crear medidas de texto que sean capaces de interpretar y explicar ciertos resultados en lenguaje natural al usuario. Creando expresiones DAX mediante el uso de variables, campos y otros elementos programáticos conseguiremos que, en función de los filtros seleccionados por el usuario, el texto de la visualización se modifique dinámicamente, actuando casi como un analista de datos automatizado capaz de evaluar distintos escenarios y ofrecernos de una forma muy sencilla la respuesta que buscamos.

Por ejemplo, en la siguiente imagen podemos ver una medida que nos explica los aspectos clave de la rentabilidad financiera teniendo en cuenta el contexto de filtro aplicado por el usuario:

Este es un ejemplo sencillo, pero mediante esta funcionalidad podemos llegar a crear textos dinámicos realmente complejos que nos analicen y expliquen en lenguaje común cualquier aspecto de nuestro modelo de datos. Podemos aplicarlo al análisis de las ventas, las variaciones del endeudamiento, la tesorería de la empresa o en la realización de cualquier otro estudio que nos interese, disponiendo de una forma de presentar al usuario la información financiera u operativa realmente impactante. Por supuesto, el DAX necesario será más largo y complejo en función del número de escenarios y condicionales que necesitemos analizar con nuestra fórmula, pero probablemente no mucho más difícil de implementar.

Cuando analizamos estados económico-financieros, ratios y otros indicadores, lo que hacemos son comparaciones y condicionales mentalmente, y es por ello que el proceso de elaboración de informes que tratan de establecer conclusiones y orientar la acción es, en muchos casos, perfectamente programable. Un texto dinámico de este tipo es simple, potente e inmensamente valioso desde el punto de vista de la experiencia del usuario, proporcionándole un valor significativo durante el proceso de análisis de datos y de toma de decisiones.

Títulos dinámicos con DAX

Uno de los usos más extendidos de este tipo de medidas es el de crear títulos dinámicos para nuestras visualizaciones o páginas de un informe. A medida que Power BI incluye nuevas características como el Drillthrough, o los botones y marcadores, se abre la puerta para que los informes sean cada vez más interactivos, y por extensión, potencialmente más complejos, y es muy importante tener en cuenta la necesidad de que sigan siendo intuitivos de utilizar por el usuario final.

Esta forma de crear títulos dinámicos mediante DAX siempre tuvo, en mi opinión, un gran inconveniente, y es que dichos títulos son una visualización distinta, no son en realidad el título de la visualización que pretendemos describir. Esto produce que, aunque en un entorno de escritorio pueda funcionar correctamente, en cuanto se intentan visualizar en algún dispositivo móvil, la nueva organización de las visualizaciones dentro de la página produce que los títulos pierdan por completo su sentido.

A partir de la actualización de abril de Power BI la cosa cambia. Desde la versión inicial de Power BI hemos podido personalizar los títulos de cada visualización, pero siempre mediante texto estático. Con la nueva funcionalidad introducida podemos usar el cuadro de diálogo de formato condicional para cambiar el título de una visualización mediante el uso de expresiones DAX, de forma que los títulos reflejen siempre el estado actual del informe, evitando que el usuario «se pierda» al hacer uso de la aplicación de filtros y segmentadores.

Por ejemplo, en la siguiente imagen podemos ver una Cuenta de Resultados analítica con un título, que responderá, al igual que la propia visualización, a los filtros aplicados por el usuario final:

Image 2

Para llevar esto a cabo, primero debemos crear la medida que usaremos en el título de nuestra visualización. El código correspondiente al título de la imagen anterior es el siguiente:

TituloPyG =
VAR ListaMesNumero =
    VALUES ( Calendario[MesNumero] )
VAR MesNumerosYNombres =
    SUMMARIZE ( Calendario; Calendario[MesNumero]; Calendario[Mes] )
VAR MesesSelected =
    CONCATENATEX (
        MesNumerosYNombres;
        VAR CurrentMesNumero = Calendario[MesNumero]
        VAR CurrentMesNombre = Calendario[Mes]
        VAR IsNextSelected = CurrentMesNumero + 1 IN ListaMesNumero
        VAR IsPrevSelected = CurrentMesNumero – 1 IN ListaMesNumero
        RETURN
            IF (
                NOT ( IsPrevSelected && IsNextSelected );
                CurrentMesNombre & IF ( IsNextSelected«-««. « );
                BLANK ()
            );
        «»;
        Calendario[MesNumero]
    )
RETURN
    «Cuenta de PyG de « & [DivisionSelected] & » para los meses de «
        LEFT ( MesesSelectedLEN ( MesesSelected ) – 2 ) & » de los años «
        FORMAT ( [AñoSelected] – 1«» ) & » y «
        FORMAT ( [AñoSelected]; «» )

Esta medida hace uso de una forma realmente creativa, propuesta por Chris Webb, de especificar una lista de valores secuenciales (en este caso los meses del año), de forma que en el caso de que existan rangos consecutivos, se utilice un guion entre el primer y el último elemento, añadiendo mediante comas el resto de meses seleccionados. Para ello, necesitamos crear una variable con el número del mes, que nos permitirá, en el contexto de fila introducido por la función CONCATENATEX(), verificar si el mes anterior y posterior forman parte del contexto de filtro actual o no, para después especificar el comportamiento deseado en cada caso.

Una vez tenemos el código de nuestra medida, podemos hacer uso del cuadro de diálogo de formato condicional haciendo clic con el botón derecho en el área de «texto del título» en el panel de formato, dentro del menú contextual de la visualización correspondiente, y seleccionando «formato condicional»:

Image 3

A continuación, en el cuadro de dialogo seleccionamos el campo de texto deseado en nuestro modelo de datos:

Image 4

Una vez establecido dicho título, dispondremos de una visualización con un título que interactuará dinámicamente con el resto de visualizaciones y filtros del modelo de datos. Usando esta nueva funcionalidad de Power BI, podremos crear títulos para nuestras visualizaciones que ayudarán al usuario a navegar con facilidad a través de nuestros informes.

En el siguiente gif podemos ver dos visualizaciones con sus títulos correspondientes y las selecciones realizadas en el panel de filtros, donde podemos observar con claridad como los títulos responden dinámicamente al contexto de evaluación de la misma forma que las propias visualizaciones. (hacer clic para ampliar):

Este artículo utiliza visualizaciones de Zebra BI. Puedes descargarlas en periodo de prueba en: https://zebrabi.com/pbi-free-trial/

Todo el código DAX de este artículo ha sido formateado con «DAX Formatter»
DAX Formatter by SQLBI