Time intelligence. Funciones de tiempo en Power BI

Data Analysis Expressions, o DAX, es el lenguaje de programación usado en Power BI Desktop, Power Pivot de Excel, o Analysis Services. Este lenguaje tiene una librería de funciones y operadores que, combinados, permiten analizar conjuntos de datos para extraer información. Dentro de esta librería de funciones, se incluyen las funciones de inteligencia de tiempo.

Las funciones de inteligencia de tiempo, o time intelligence, permiten manipular datos mediante periodos de tiempo, desarrollar cálculos y compararlos según esos periodos. Es importante saber que para que estas funciones obtengan buenos resultados, es necesario disponer en nuestro modelo de una tabla calendario (si no sabes cómo crearla, en nuestro canal de Youtube te lo explicamos), o dimensión fecha, que contenga en una columna todas las fechas contenidas en un periodo de tiempo sin duplicados. En esta entrada vamos a ver cómo funcionan algunas de estas funciones.

Funciones time intelligence. TOTALYTD

Para trabajar con las funciones time intelligence, vamos a usar el conjunto de datos del Ejemplo de análisis de gasto en TI para Power BI de la página de documentación de Microsoft. Se trata de un archivo que recoge en la tabla FACT los gastos de una empresa, la fecha en la que se realizaron, el departamento que los realizó, etc. Además, en este archivo hay una tabla, DATE, que hace las veces de dimensión fecha, y ya vienen establecidas las relaciones correspondientes entre la tabla de hechos y las de dimensiones.

Para comenzar el análisis, crearemos una medida muy simple que sume todos los gastos de esta tabla.

A continuación, en la vista del informe, vamos a crear un gráfico de líneas en el que representemos el valor de la medida GASTO por mes.

En el gráfico anterior vemos el gasto que se ha realizado cada mes. Pero, ¿y si queremos representar el gasto acumulado mes a mes? Para este tipo de cosas tenemos las funciones time intelligence como TOTALYTD, que evalúa una expresión desde el comienzo del año hasta la fecha actual. Esta función requiere dos argumentos: la expresión a evaluar, que puede ser una medida ya creada, y la columna que contiene las fechas. Vamos a crear una nueva medida.

Una vez creada, la representamos en un gráfico como el anterior.

El resultado, representado debajo del primer gráfico, es una línea que representa el gasto realizado desde el principio del año hasta ese momento. El resultado se entenderá mejor mediante la siguiente tabla.

El valor de GASTO_YTD en enero es el mismo que la medida GASTO, sin embargo, en febrero, el valor de GASTO_YTD, es la suma del valor de GASTO en enero y febrero, y aumenta de la misma forma en los meses siguientes.

De la misma forma que TOTALYTD evalúa una expresión desde el principio del año, existen otras funciones para evaluar expresiones desde el comienzo del mes, o del trimestre. Estas funciones son TOTALMTD y TOTALQTD.

Funciones time intelligence. CLOSINGBALANCEYEAR

La función CLOSINGBALANCEYEAR evalúa una expresión en la última fecha del año en el contexto actual. Es decir, si estamos en 2020, evalúa la medida a 31 de diciembre de 2020.
Vamos a ver cómo aplicarla en nuestro ejemplo. Vamos a crear dos medidas, una con el gasto al final de año y otra con el gasto al final del mes, CLOSINGBALANCEMONTH.

Vamos a representar la medida GASTO_FINAL_AÑO en primer gráfico, el que contiene la medida GASTO.

El resultado es una línea cuyo valor cada mes, es el mismo que el gasto en diciembre. En enero, esta medida vale lo mismo que en junio, y ese valor es el del gasto en diciembre. Esta función no calcula el valor acumulado hasta final de año, eso sería TOTALYTD, sino el valor en esa fecha concreta.

Al representar estas dos nuevas medias junto a las dos anterior se verá perfectamente.

El valor de GASTO_FINAL_AÑO es constante y vale lo mismo que la medida GASTO en diciembre. La medida GASTO_FINAL_MES vale, mes a mes, lo mismo que GASTO. Esto es así debido a los filtros que aplica el contexto creado al representarlas en esta tabla, junto a los meses. Sin embargo, para que la medida GASTO valiera lo mismo que GASTO_FINAL_MES en otro contexto, habría que escribir varios filtros en la fórmula.

Funciones time intelligence. DATEADD

Uno de los cometidos más importantes de las funciones time intelligence es el de realizar comparaciones entre periodos de tiempo. Por ejemplo, pretender comparar el estado financiero actual de un departamento con el estado hace justo un mes, o el año anterior a estas alturas. La función que nos permite realizar esto es DATEADD.

DATEADD es una función que crea un contexto de tiempo en el que se desplaza hacia delante o hacia detrás la fecha actual un número de periodos, que pueden ser días, meses, trimestres o años. Con esta función se pueden añadir columnas calculadas con fechas basadas en las fechas de otra columna, aunque su uso más potente es en medidas, en las que se añaden a funciones que requieren como argumento una tabla o un filtro, como CALCULATE. Los argumentos que hay que pasar a esta función son la columna que contiene las fechas de la tabla calendario, el número de periodos que queremos desplazarnos en el tiempo, que deberá ser negativo para ir hacia atrás, y el tipo de periodo, que pueden ser días, meses, trimestres o años.

Vamos a ver cómo se usa esta función en el ejemplo Gasto en TI creando otra medida.

Con esta medida estamos calculando el gasto, pero exactamente un mes antes a la fecha que establezca el contexto en cada momento. Vamos a representarla en una tabla junto a la medida GASTO para ver su comportamiento.

Como vemos, la medida GASTO_MES_ANTERIOR vale, en cada mes, exactamente lo mismo que la medida GASTO el mes anterior. Por ejemplo, el valor en febrero de GASTO_MES_ANTERIOR, es el mismo que el valor de GASTO en enero. Es decir, en el contexto creado en esa fila de la tabla, cuya fecha sería febrero de 2014, estamos representando el gasto ese mes, y el anterior.

La potencia de esta función está en poder representar el valor de una medida en una fecha concreta, y en la misma parte del gráfico o de la tabla, representar el valor de la misma medida en una fecha distinta, con la que queremos comparar. Puede parecer que esto es algo sencillo de hacer mediante otros métodos, como usar la función CALCULATE con un filtro dentro con las fechas que nos interesen, pero estos otros métodos o no permiten representar las dos medidas en una única visualización, en el mismo eje de un gráfico, por ejemplo, o dan error al establecer un filtro de fecha en el informe.

Este ejemplo sólo contiene gastos de 2014 pero, si creáramos una medida para calcular el gasto un año antes y la representáramos de la misma forma que la anterior, mostraría en la tabla los gastos correspondientes al año 2013, a pesar de que el segmentador estuviera filtrando los datos únicamente del año 2014.

Las funciones time intelligence son básicas en el desarrollo de análisis de datos, como en los análisis financieros en los que se compara el resultado de un ejercicio con los anteriores, aunque también son particularmente útiles en muchos otros campos. En Bisnia sabemos que son fundamentales y por eso seguimos trabajando y aprendiendo de ellas, de forma que podamos transmitir todas sus posibilidades en nuestros cursos Power BI.

LEAVE REPLY

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *