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:
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.
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:
hemos dicho que hay que sumarle los 12 meses anteriores para evitar la
estacionalidad, para ello, creamos la siguiente métrica:
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:
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:
- Total ventas
- Total ventas TOTALYTD
- T.A.M.
- 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.
Power BI:
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:
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!!!:
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:
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:
actualiza la matriz:
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:
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!