Jueves, y hoy vengo con fuerza y el post de hoy promete. Seguimos con la inteligencia de tiempo, en concreto vamos a ver que es el T.A.M (Total Anual Móvil), cómo calcularlo y aplicarlo y lo complementaremos con los denominados grupos de cálculo, un puntazo que nos va a permitir hacer un modelo más sencillo en cuanto a número de métricas si tenemos que analizar con funciones de inteligencia nuestro modelo.

Por hacer una pequeña introducción, ¿sabéis qué es T.A.M o Total Anual Móvil? (Todos tecleando en Google “qué es el TAM”… ¡Qué esto no es un examen! J )

El T.A.M. es la suma de los 12 meses anteriores a nuestra métrica. Es un indicador que a la hora de analizar los datos nos va a venir muy bien ya que nos elimina la estacionalidad al integrar 12 meses consecutivos. Si os dais cuenta, me estoy refiriendo en todo momento al T.A.M. como indicador y no como medida en cuestión, ya que podemos calcular el T.A.M. de las cantidades vendidas, del importe vendido o comprado… Es decir, cualquier indicador que tenga cálculos de inteligencia de tiempos.

Por ejmplo, si una vez que hayamos calculado el T.A.M. de las ventas, lo comparamos/graficamos con las ventas mensuales y las ventas acumuladas en un gráfico de líneas ¿qué obtenemos?... La gráfica del zorro, ahí lo dejo… Más adelante veremos el porqué.

Vamos a nuestro modelo de Contoso de Power BI, y calculamos el total de las ventas, para ello:

 

 
 

Y lo arrastramos a nuestro informe como siempre, pero esta vez lo vamos a mostrar en un gráfico de líneas y a la vez en una matriz, tal que así:

 

 
 

Como podemos ver, las ventas fluctúan mes a mes, y en la matriz nos arroja por la configuración de la visual que tenemos seleccionada el total de todo el año. Ahora vamos a calcular acumulado mensual de las ventas, venga pregunta sobre el post anterior… para ello usaremos la función ¿TOTALYTD? ¿DATESYTD? ¿FILTER?

Bien, para llegar al resultado podríamos usar cualquiera de las tres como hemos ido viendo en los post anteriores:

TOTALYTD:

 
 
 
  
Ahora me diréis: Javi, la función TOTALYTD no necesita escribir el CALCULATE ya que lo ejecuta por detrás… Y tenéis toda la razón, pero como comenté en el post anterior…

Buena práctica: siempre que CALCULATE esté presente en el código, hacerlo evidente siempre es una buena práctica, por ejemplo, por la transición de contexto que implica.

DATESYTD :
 
 
 
FILTER:
 
 
 

Y las 3 nos devuelven, como podemos ver exactamente el mismo resultado:

 

 

 
Ahora entra la elección de la función que mejor se adapte a nuestro modelo y buenas prácticas. Por lo que os lo dejo a vuestra elección, pero por si tenéis dudas, lo mejor es ejecutar el analizador de rendimiento de Power BI y ver que métrica nos devuelve el valor más rápido. Para ello, colocamos las 3 métricas en tarjetas: 

 


 

 Sobre la barra de menú, hacemos click en Ver – Analizador de Rendimiento: 



En el panel que se nos abre, le damos a iniciar grabación y actualizamos los objetos visuales:

 
 
 

Como vemos, para nuestro modelo, la métrica más rápida a la hora de ejecutarse es TOTALYTD, por lo que optaremos por ésta y la arrastramos a nuestro gráfico de líneas y la matriz:

 

 
  
Ahora, vamos a calcular el T.A.M. de las ventas, para ello hemos dicho que hay que sumarle los 12 meses anteriores para evitar la estacionalidad, para ello, creamos la siguiente métrica: 
 
 
 
 
Y la arrastramos a nuestra gráfica de líneas y nuestra matriz: 
 
 
 
¿Qué vemos en el gráfico de líneas? ¡El gráfico del zorro! Bromas aparte, el T.A.M. lo podemos a cualquier medida que use cálculos de inteligencia temporal. Por ejemplo, vamos a calcular el T.A.M. del año pasado, para ello:

 
Y lo arrastramos a nuestra matriz:
 
 
 

Hasta aquí, sin problemas, pero os estaréis preguntado… Javi, con este post no me has mostrado “nada” interesante, sólo estás repitiendo formas de cálculo ya vistas... De acuerdo, pero todo tiene su explicación. Como podéis ver, para montar la tabla superior hemos generado 4 medidas diferentes, que son:

  1. Total ventas
  2. Total ventas TOTALYTD
  3. T.A.M.
  4. T.A.M. Año anterior


Pero si además de las 4 medidas anteriores, en nuestro modelo queremos calcular lo mismo para las unidades vendidas, para el coste de fabricación y para el beneficio. ¿Cuántas medidas deberíamos crear? ¿12 medidas a parte de las ya creadas? Podemos, pero terminaremos con un modelo bastante tedioso de mantener, así como de crearlo. Pero para solucionarlo, tenemos los maravillosos grupos de cálculo J

¿Qué son los grupos de cálculo?

Según la web de Microsoft:

Es una funcionalidad que nos permite crear rápidamente muchas medidas similares y pueden ayudar a descongestionar el panel Campos. ¿Qué quiere decir? En lenguaje para los mortales, los grupos de cálculos es una funcionalidad que creando “medidas” similares nos permite hacerlas dinámicas sin necesidad de crearlas unitariamente. ¿Cómo lo hacemos?

Para eso necesitamos usar la herramienta externa Tabular Editor. Vamos a Herramientas externas – Tabular Editor.

 

 
 
 Y se nos abre Tabular Editor, conectado a nuestro modelo de Power BI: 

 
 
Si desplegamos el árbol de las tablas, vemos todas las tablas de nuestro modelo: 
 
 
 
 

Para crear un grupo de cálculo, sobre la carpeta de tablas, hacemos click con el botón derecho y seleccionamos Crear Nuevo – Grupo Calculado:

 

 

Le damos el nombre que deseemos al grupo calculado:

 

 
 

Para crear un elemento dentro de este grupo, hacemos click con el botón derecho sobre el grupo creado, Crear Nuevo Item: 

 

 

Y escribimos la siguiente expresión:

SELECTEDMEASURE ()

La función SELECTEDMEASURE devuelve una referencia a la medida que está actualmente en contexto cuando se evalúa el elemento de cálculo, le damos el nombre que deseemos y lo validamos dándole al check del cuadro.

 

 
 

Ahora, vamos a crear la expresión para el cálculo del acumulado hasta la fecha actual con TOTALYTD, para eso escribimos:

 
 

¿Qué es lo que hace la expresión de arriba?  Nos calcula el TOTALYTD de la medida seleccionada en el contexto (SELECTEDMEASURE).

Ahora vamos a generar el Total Anual Móvil, para ello escribimos:

 

 

 

¿Qué es lo que hace la expresión de arriba?  Nos calcula el T.A.M. de la medida seleccionada en el contexto (SELECTEDMEASURE).

Ahora vamos a generar la expresión para el T.A.M. del año anterior, para eso seguimos el mismo criterio que hasta ahora:

 

 
 

Una vez ya generados los elementos deseados, para que estos se pasen a Power BI es imprescindible guardarlo J.

Una vez guardados, volvemos a Power BI y nos aparece el siguiente mensaje:

 

 
 

Le damos a actualizar y dejamos que Tabular Editor haga su magia en Power BI. Una vez que ha terminado de actualizar, vemos que se nos ha creado una tabla nueva llamada en este caso Grupo Calculado con una única columna:

 

 

Javi, ¿y dónde están los elementos que hemos creado? Tranquilos, están, pero no los vemos, para ello vamos a generar una tabla con los meses como filas y arrastramos la medida Total Ventas, de la siguiente manera:

 

 
 

Si os fijáis, la parte de las columnas está en blanco:

 

 

Arrastramos la columna de la tabla del Grupo Calculado que hemos creado y ¡¡¡tachan!!!:


 
 
Se nos ha rellenado la tabla al igual que la tabla de la izquierda. Ahora vamos a quitar la medida de Total Ventas y arrastramos la medida de Total Costo: 
 
 
 

¡¡Y tach…. Umm!! ¿No veis algo raro? La columna TAM Año Anterior no ha cambiado pero el resto sí… ¿Qué está pasando? Que he creado el elemento “incorrectamente” o mejor dicho referenciado a una medida del modelo para ver si estabais atentos:

 

  

Si os fijáis, le estamos indicando una medida en concreto [TAM] y no el contexto de la medida que queremos que se evalúe. Una de las formas correcta de escribir el elemento es: 
 
 
 
 

Guardamos, y automáticamente se nos actualiza la tabla:

 


 

Hasta aquí todo correcto, pero ¿tengo que visualizar la matriz con todas las columnas? No es necesario, basta con sacar un segmentador y añadir la columna del grupo calculado:

 
 
 
Seleccionando la medida que deseemos visualizar y nos actualiza la matriz: 
 
 
 

Y otra pregunta: ¿tengo que crear una matriz por cada medida que quiera analizar? La respuesta en este caso también es NO ya que podemos arrastrar las medidas que deseemos a la matriz. Por ejemplo, si queremos analizar las Ventas y el Coste basta con arrastrar ambas medidas a la matriz como se puede ver: 
 
 
 

Y hoy es el día de las preguntas… ¿Pero si quiero analizar las distintas medidas por separado tengo que crear una matriz por cada una de ellas? La respuesta es si quieres sí, pero no tienes por qué hacerlo J. Aunque esto no tiene que ver con los grupos de cálculo os lo voy a contar y se puede aplicar a otras muchas cosas en Power BI y desde mi punto de vista es muy vistoso.

Lo primero que debemos de hacer es crear una tabla con el nombre que asignemos a las medidas, para nuestro modelo hemos asignado los siguientes:

 

 

A continuación, arrastramos un segmentador a nuestro informe, en concreto para este caso me he descargado el ChicletSlicer de la Store de Microsoft:

 

 
 

Y para la métrica dinámica, creamos la siguiente medida con variables, de tal manera que en función del valor seleccionado nos muestre una medida u otra:

 

 
 

La medida nueva que acabamos de crear, la arrastramos a la matriz:

 

 
 

Como veis, no nos muestra nada ya que no tenemos ninguna selección en el segmentador. Si realizamos una selección en el mismo:

 

 

La matriz carga los valores de la métrica con las medidas de los grupos de cálculo. Si cambiamos la selección, la matriz actualiza los valores.

 

 
 

¿Qué os ha parecido los grupos de cálculo? ¿A qué son una pasada si tenemos que hacer un análisis de inteligencia de tiempo de muchas métricas que son repetitivas? Resumiendo, como dice Microsoft:

Los grupos de cálculo resuelven un problema en modelos complejos en los que puede haber una proliferación de medidas redundantes mediante los mismos cálculos.

Y con esto, ya termino el post y la saga de inteligencia de tiempo que al final os voy a terminar aburriendo.J

Y prepararos que vienen curvas... ¡la siguiente saga que comenzaremos será relacionada con SSIS!

¡Nos vemos en los datos!