PREVIOUSMONTH – PARALLELPERIOD – DATEADD – Uso de variables y Formato condicional
En este vídeo vamos a ver cómo comparar los períodos mensuales a través de las funciones de inteligencia de tiempo PREVIOUSMONTH, PARALLELPERIOD y DATEADD.
A menudo va a ser útil comparar la métrica de un período actual con el anterior, en este caso serán meses y es posible construir cálculos de comparación de períodos usando la función CALCULATE además de estas funciones de inteligencia de tiempo.
Vamos paso a paso.
Se requiere un tabla de calendario o fechas
Para trabajar con funciones de inteligencia de tiempo, se debe incluir una tabla de fechas en el modelo de datos. La tabla de fechas debe incluir una columna con una fila para cada día de cada año incluido en los datos.
En nuestras relaciones tenemos una relación entre nuestra tabla de calendario que está relacionándose con nuestra tabla Premium, la tabla de Ventas, a través de una relación de uno a muchos con el campo de la fecha.
Obtención de las ventas del mes previo
Vamos a comparar las ventas de un mes con respecto al mes anterior y calcular su diferencia porcentual.
Crearemos tres medidas en las que obtendremos el mismo resultado, el total de ventas del mes anterior, pero utilizando tres funciones de inteligencia de tiempo distintas.
Ventas MesPrevio 1 (función PREVIOUSMONTH)
Crearemos una matriz; vamos a ampliarla. Movemos el campo Año de nuestra tabla de calendario a Filas. También movemos el concepto de Mes-Año a Filas y la medida Tot Ventas a Valores.
Vamos a expandir todos los años y los meses. Nos situamos con clic derecho – Expandir – Todas. Vemos todos los conceptos de Mes-Año para todos los años.
Creamos nuestra primera medida que vamos a llamar Ventas MesPrevio 1
Nos situamos en la tabla de medidas, clic derecho, Nueva Medida.
Podemos aplicar el atajo de teclado Ctrl++ para que se vea un poco más grande la barra de fórmulas. El nombre de la medida puede contener espacios en blanco.
Escribimos CALCULATE. Como expresión usamos nuestra medida de Tot Ventas y como filtro vamos a usar la función de inteligencia de tiempo PREVIOUSMONTH. Al abrir paréntesis nos pide Dates que está aludiendo a una tabla de calendario con el concepto de la Fecha. Buscamos nuestra tabla de calendario que se llama Dates y apuntamos a la fecha Date.
Ventas MesPrevio 1 = CALCULATE([Tot Ventas],PREVIOUSMONTH(Dates[Date]))
Vamos a crear el mismo concepto de otra manera.
Medida Ventas MesPrevio 2 (Función PARALLELPERIOD)
Vamos a usar otra función de inteligencia de tiempo llamada PARALLELPERIOD. Tiene una ventaja y es que podemos precisar el número de intervalos y el intervalo en cuestión. Nos pide la tabla de calendario apuntando al campo de fechas, el número de intervalos puesto que queremos seleccionar el mes anterior escribimos -1 y para el intervalo seleccionamos Month. Vemos que hay más opciones con esta función que con la anterior. Con PREVIOUSMONTH siempre va a ir a buscar los meses y ahora podemos elegir además tanto trimestres como años. Elegimos en este caso Month.
Ventas MesPrevio 2 = CALCULATE([Tot Ventas], PARALLELPERIOD(Dates[Date], -1, MONTH))
Medida Ventas MesPrevio 3 (Función DATEADD)
Creamos una nueva medida que llamamos Ventas MesPrevio 3. Como filtro vamos a utilizar a la función DATEADD de inteligencia de tiempo. Nos vuelve a pedir la tabla de calendario y el concepto es el mismo, número de intervalos e intervalo. Como intervalo podemos maquetar con día, mes, trimestre o año; seleccionamos mes.
Ventas MesPrevio 3 = CALCULATE([Tot Ventas], DATEADD(Dates[Date], -1, MONTH))
Al arrastrar las 3 medidas a nuestra matriz vemos que los conceptos son equivalentes, estamos recuperando en cada mes justo las ventas del mes anterior.
Vamos a desactivar marcando la matriz los subtotales, vamos al formato, Subtotales de fila los eliminamos, para que no tengamos problemas visualizando los datos que queremos.
Obtención de la diferencia porcentual de un mes con el anterior
Ahora lo que vamos a calcular es la diferencia porcentual de un mes con el anterior.
Creamos una nueva medida con el uso de variables. La llamamos Crecimiento Mensual. Shift+Enter para aplicar un salto de carro para escribir el código en varias líneas. Escribimos una variable, para ello utilizamos la palabra reservada VAR. Asignamos un nombre a una variable, la vamos a llamar MesAnterior. El nombre de las variables no puede contener espacios en blanco. Vemos que las marca con un color especial. Esta variable va a ser igual a cualquier de las medidas calculadas previamente. Vamos a elegir Ventas MesPrevio 1. Es equivalente, porque con las tres se obtiene el mismo resultado.
Creamos una segunda variable con la palabra reservada VAR. A esta segunda variable la vamos a llamar DiferenciaVentas. Vamos a utilizar la función DIVIDE que es muy interesante porque permite obtener además de un numerador y un denominador un resultado alternativo en caso de tener alguna división por 0 para evitar errores. Dividimos la medida de Tot Ventas menos la variable de MesAnterior en el denominador, todo ello dividido por la variable MesAnterior. Cerramos el paréntesis de la función DIVIDE. Ahora vendría un RETURN, que es lo que queremos devolver. Lo que queremos devolver es justo la variable DiferenciaVentas. Vemos como nos lee el concepto de las variables. Las variables siempre las marca como (x). Es la diferencia respecto a las funciones que las señala con fx.
Arrastramos la medida del Cremiento Mensual a la matriz y cambiamos el formato a porcentaje %. Vemos que los cálculos en la matriz están apuntando a diferencias porcentuales de un mes con el mes anterior.
Aplicando formato condicional a la diferencia porcentual
Como Bonus Extra vamos a aplicar un formato condicional a la medida de crecimiento mensual de modo que se aplique un color verde cuando el porcentaje del cambio de un mes con el anterior sea positivo y un color rojo cuando el porcentaje del cambio de un mes con el anterior sea negativo.
Vamos a la zona de valores. Seleccionamos Crecimiento Mensual y en esta pequeña flecha, desplegamos y le decimos que queremos Formato Condicional en este caso por Iconos. Se despliega el formato condicional.
Trabajamos con un estilo de formato de Reglas. Se aplica solo a los valores. En qué campo debemos basar esto, en el Crecimiento Mensual, en esa medida que hemos creado. Vamos a considerar que el diseño de los iconos lo vamos a querer a la derecha de los datos. Alineación de los iconos en el Medio y los estilos ahora los vamos a cambiar.
Establecemos una primera regla. Si es mayor o igual que 0, elegimos número y es menor que el máximo a nivel de número, entonces grabamos un icono de semáforo verde.
En la segunda regla vamos a establecer que, si es mayor que el Mínimo a nivel de número, no queremos porcentaje, y además le decimos que, si es menor que 0 a nivel de número, entonces que nos grabe un icono de semáforo rojo.
La regla tercera la eliminamos. Aceptamos.
Podemos ver en nuestra matriz como además de poder ver los valores porcentuales, cuando el valor es negativo está indicando una pérdida de un mes con el mes anterior y aparece un semáforo rojo y cuando la comparación de un mes con el mes anterior es positiva, además de aparecer el valor aparece un semáforo en verde gracias a que hemos implementado un formato condicional.
Esto ha sido todo en la revisión de las comparaciones de períodos mensuales de un mes con el mes anterior.