Introducción al scripting de medidas con Tabular Editor. Creación automática de medidas para tarjetas suprimiendo el “en blanco”

Introducción al scripting de medidas con Tabular Editor. Creación automática de medidas para tarjetas suprimiendo el “en blanco”

Tabular Editor es simplemente apasionante. Sin duda desde la aparición de los marcadores para mi no ha ocurrido nada tan relevante en Power BI como la integración de las herramientas externas, sobre todo por la integración de Tabular Editor.

Que sí, que antes podíamos hacer todo esto y no lo hacíamos, totalmente de acuerdo con esta afirmación, pero ahora es que está ahí, mucho más a mano, soportado y mucho más confiable.

Se pueden hacer muchísimas cosas con tabular editor para Power BI pero yo destacaría 3:

  • Automatización de la creación de métricas con scripting
  • Creación de KPIs (los auténticos, los del semáforo de Excel)
  • Creación y mantenimiento de Grupos calculados.

Sobre todos iremos posteando en una serie específica para tabular editor que voy a crear, pero quería empezar por una breve reseña de scripting para solventar un tema muy recurrente, la eliminación del “En blanco” en la visualización de tarjeta.

Hace mucho tiempo que plantee ese problema en mi blog

Después de eso apareció la función COALESCE y ahora mejor que +0 es utilizar el coalesce en la medida = COALESCE([Medida],0), pero como ya planteaba en su día hay que tener mucho cuidado con una medida así ya que si insertamos esa medida en una tabla nos va a devolver valores para todos y cada uno de los elementos dimensionales que estemos analizando, si no tienen valor no aparecerían en la visual pero si forzamos la aparición de 0 aparecería para todos y podría complicar muchísimo el rendimiento de la visualización e incluso darnos errores de memoria y no representarla.

Es por ello que mi consejo siempre es tener una medida normal y una medida que devuelva 0 en caso de blanco para las visuales de tarjeta. Es en este punto cuando cobra sentido la utilización de scripting y de tabular editor para poder crear de forma automática y sin esfuerzo cuantas medidas con 0 queramos.

Yo no domino C# que es el lenguaje que utiliza el scripting de Tabular editor, pero mi buen amigo y compañero del grupo de Telegram @PowerBIEspañol Ricardo Rincón me ayudó con este script y subió el ejemplo que vamos a explicar a su github:

https://github.com/nexus150/Tabular-Editor-Scripts

Este es el código que vamos a analizar y vamos a cambiar en función de mi estilo y necesidad:

// Crear versión de cada medida con coalesce para colocar en tarjetas
foreach (var m in Selected.Measures)
    {
        string medida = m.Name;
        Model.Tables["Tabla"].AddMeasure
(medida + " for card", 
"Coalesce([" +medida+ "],0)", "Coalesce");
    }

Vamos a ver el escenario:

Tengo 4 medidas en mi canvas que me devuelve en las 4 el (En blanco) que tan poco gusta a todo el mundo

Lo que vamos a hacer es crear estas cuatro medidas automáticamente con la fórmula COALESCE(Medida,0). A mi a esa medida me gusta llamarla Lab0_Medida y es como voy a llamarla en el Script pero podéis cambiar en el script para nombrarla como queráis.

El script es el siguiente:

// Crear versión de cada medida con coalesce para colocar en tarjetas

    foreach (var m in Selected.Measures)

        {

            string medida = m.Name;

            Model.Tables[«Medidas»].AddMeasure(«Lab0_»+medida, «Coalesce([« +medida+ «],0)», «Coalesce»)

        ;}
La modificación que he hecho con respecto al código de Ricardo es simplemente a nivel del Nombre de la medida. Podríamos también cambiar el nombre de la carpera «Coalesce» por «Etiquetas0» por ejemplo.

¿Que hacemos con este script?

Pues para cada medida seleccionada antes de la ejecución del script vamos a crear una nueva medida en la tabla Medidas, dentro de la carpeta Coalesce en el que el nombre de la medida va a ser “Lab0”+medidapadre y la métrica va a ser COALESCE([medidaseleccionada],0)

Vamos a verlo paso a paso ya que una imagen vale más que mil palabras….

Partiendo de la imagen primera con las tarjetas en blanco vamos a seguir los siguientes pasos:

Abrimos tabular editor desde las herramientas externas:

Vamos a la pestaña de advanced scripting y pegamos allí el código:

Seleccionamos en la tabla de medidas aquellas medidas que queremos replicar con el COALESCE(medida,0)

Y ejecutamos el script(F5)

Al ejecutar el script se nos crean las medidas en tabular:

Guardamos los cambios (Ctrl+S)

Actualizamos nuestra tabla de Medidas en Power BI:

Y ya tenemos nuestras medidas creadas automáticamente:

Las introducimos en nuestras visuales y listo:

Como podéis observar, conserva el formato de la medida original.
Y por último, podéis guardar el script y utilizarlo en otros modelos sin ningún problema:

Una vez me dijeron, «no hay que saberlo todo, simplemente conocer a quien lo sabe». Muchísimas gracias Ricardo Rincón ya que este aporte es tuyo.

FranM

1 comentario hasta ahora

jose Publicado el12:32 pm - 18/10/2020

EXCELENTE TIP

Dejar una respuesta