Introducción
Es muy habitual en informes de PowerBI tener la necesidad de comparar datos respecto a periodos de tiempo anteriores, bien sea para hacer una comparativa respecto el mes anterior, respecto al año anterior u otros intervalos de tiempo, dependerá de las necesidades de análisis que tengamos. En lenguaje DAX, para poder usar Funciones de inteligencia de tiempo, será necesario la creación de una tabla de Calendario. Sin ella, no seremos capaces de calcular medidas tan necesarias como comparar las ventas respecto al mismo periodo que tengamos seleccionado del año pasado o poder ver la variación en % respecto la semana pasada de la medida a analizar. A parte de permitir usar las funciones de inteligencia de tiempo, tener una tabla calendario en nuestro modelo de datos nos permitirá vincular simultáneamente distintas tablas, de tal forma que el filtro de fecha puede ser común en más de una tabla facilitando la navegabilidad en el informe. Además, otro beneficio importante a tener en cuenta, es la creación de otros elementos relevantes como puede ser identificar los días de fin de semana o entre semana. En este artículo, vamos a ver como podemos crear una tabla de Calendario en lenguaje DAX. Además, también veremos como relacionar la tabla calendario con una tabla de ventas y crearemos un gráfico para ser capaces de analizar las ventas de un año respecto el año anterior, trimestre a trimestre. ¡Vamos a ello!.
Creación tabla Calendario
Lo primero que vamos a hacer es abrir la aplicación de PowerBi Desktop y una vez abierta pulsaremos la pestaña de “Modelado” situada en la cinta de opciones. Una vez seleccionada, marcaremos la opción “Nueva Tabla”, puesto que el código que vamos a escribir, genera una tabla en el sistema.
Cuando pulsamos “Nueva tabla” se nos abre una barra con el texto “Tabla =” subrayado, similar a la de Excel. Aquí es donde tenemos que introducir el código que nos va a generar la tabla de calendario.
En la barra de texto, introduciremos el siguiente código. Solo hace falta escribir el contenido exactamente igual al de la imagen (se facilita el código para que se pueda descargar al final del artículo). Una vez copiado, pulsamos Intro y ya tendremos la tabla de fechas creada. Lo bueno de crear de esta forma el calendario, es que podemos reutilizar la fórmula para otros informes de PowerBI con tan solo copiar y pegar el código.
Para ver los datos en formato tabla iremos al segundo de los tres botones que hay en la parte izquierda superior del PowerBI desktop un botón en forma de matriz que se llama “Datos”.

A continuación, os mostramos los datos de la tabla generada del 25 de junio al 5 de julio, para que se vean los cambios de día, semana, mes, trimestre y semestre a medida que avanzan los días. Una primera imagen hasta la columna de “Trimestre”
Segunda imagen de las mismas líneas. Se muestran columnas restantes.
Una vez creada la tabla, realizaremos algunos pasos necesarios para una correcta interpretación y visualización de los datos. El primer paso y más importante será marcar la tabla de contenido como tabla de fechas. Para hacerlo, cuando estemos visualizando los datos de la tabla, marcaremos la opción de la pestaña de la cinta de opciones “Herramientas de tablas” y pulsaremos la opción “Marcar como tabla de fechas” – “Marcar como tabla de fechas”.
Al pulsar sobre esta opción, se nos abrirá la siguiente ventana y tendremos que seleccionar la columna “Fecha” como columna de referencia de la tabla de fechas, le daremos a aceptar y ya tenemos nuestra tabla marcada.
El segundo de todos será ordenar aquellas columnas que se ordenan en función de otra columna, por ejemplo la columna “Mes”. ¿Por qué es necesaria la ordenación de la columna “Mes” en función de otra columna? Porque por defecto, el sistema nos la ordena de forma alfabética. Veamos qué pasa si arrastramos la variable “Mes” en el lienzo de PowerBI y lo mostramos en una tabla. Para ir al lienzo, hemos ido al botón de “Informe”, justo encima del de “Datos”.

Evidentemente, tener ordenados los datos de esta forma no nos está dando ninguna información útil, para ello lo que haremos será volver a la opción de “Datos” donde se visualizan las tablas, seleccionaremos la columna de “Mes” y cuando la cabecera de la columna se quede resaltada de color amarillo, pulsaremos la opción “Ordenar por columna” y seleccionaremos la opción “MesNro”. De esta forma la columna de “Mes” nos quedará ordenada por número de mes y no por orden alfabético.
Si volvemos al informe, veremos como los meses ya nos aparecen ordenados según el orden natural de tiempo establecido.
A continuación, vamos a hacer lo propio para las siguientes columnas:
- Nombre de dia – Ordenado por Dia Semana
- Trimestre – Ordenado por TrimNro
- Semestre – Ordenado por SemNro
- M-Y – Ordenado por SortMonthYear
- T-Y – Ordenado por SortTrimYear
- S-Y – Ordenado por SortSemYear
El tercer paso será ocultar aquellas variables que no se van a usar para la visualización de datos, como por ejemplo las que hemos utilizado para la ordenación. Hay varias formas de hacerlo, la más directa y fácil es seleccionar la columna en cuestión, para el ejemplo TrimNro, y seleccionamos la cabecera con el botón derecho del ratón y seleccionamos la opción “Ocultar en la vista de informes”, de esta forma ya no nos aparecerá en la vista de informes y no nos va a molestar. Haremos lo mismo con las demás columnas que no necesitamos que se muestren en el informe. Se identifican rápidamente desde la vista de las tablas ya que la cabecera de la columna se queda sombreada de color gris.
Creación medidas inteligencia de tiempo
Además de la tabla de fechas que hemos creado, hemos cargado en nuestro modelo una tabla con líneas de venta con la siguiente estructura:
Para la carga del archivo (al final del artículo lo tendréis disponible para su descarga) utilizaremos la importación de datos Excel
Seleccionamos el archivo donde lo hayamos guardado y se nos abrirá el navegador. Tenemos que seleccionar “Ventas1” como se muestra en la imagen y veremos una previsualización de la tabla que vamos a cargar. Le damos a “Cargar” y ya tendremos nuestra tabla dentro del modelo de PowerBI.
Una vez tenemos cargada la tabla de ventas en el modelo, vamos a necesitar hacer una pequeña transformación en los datos. En este caso vamos a seleccionar la columna “Cliente” y en “Tipo de datos” vamos a escoger la opción “Texto”, para que trate el código del cliente como texto y no como un número entero. También podemos aprovechar para cambiar el tipo de fecha que se muestra en “Fecha registro”, ya que por defecto está en formato largo y es posible que nos interese más tenerlo en formato de fecha corta. En este caso seleccionaríamos la columna “Fecha registro” y buscaremos en la cinta de opciones el campo desplegable “Formato” para seleccionar el formato de fecha deseado.
Lo que haremos a continuación será relacionar nuestra tabla de fechas con la tabla de ventas, crear un filtro de fecha, crear una medida de ventas, una medida de ventas last year y una tabla en la que se va a mostrar por cliente y trimestre la diferencia de ventas respecto la fecha seleccionada y el año anterior. Lo que haremos será ir a la parte del “Modelo”. Aquí veremos las tablas “Ventas” y “dDate” y lo que vamos a hacer es arrastrar el campo “Fecha registro” de la tabla de Ventas y lo vincularemos al campo “Fecha” de la tabla dDate.
Automáticamente el sistema detecta que se trata de una relación de 1 a N (Tabla fecha -> Ventas), por eso aparece un asterisco en la tabla de ventas y un 1 en la tabla dDate.
Una vez tenemos ambas tablas relacionadas, nos iremos al informe y seleccionaremos el campo “Segmentación de datos” en la parte de “Visualizaciones”. Le asignaremos la variable “Fecha” para que quede como en la imagen. Por defecto el sistema coge la fecha mínima y la fecha máxima que hayamos introducido en el calendario. Modificaremos las fechas para que coja el intervalo 01/01/XXX1 – 31/12/XXX1+1 de tal forma que tengamos 2 años naturales entre el mínimo y el máximo seleccionado.
El siguiente paso será la creación de una medida con el nombre de “Ventas”, en este caso para las ventas. Así que en la cinta de opciones, buscaremos la opción “Nueva Medida” y la pulsaremos.
En la barra que se nos abre especificaremos el código siguiente:
Esta medida nos calculará la suma del importe de ventas, en función de los filtros que tengamos en el informe, así como los filtros de contexto en los objetos. Volvemos a crear otra medida, esta vez calcularemos las ventas comparando respecto el año anterior, para ello usaremos la función CALCULATE, pasaremos la medida “Ventas” que acabamos de crear, y dentro del CALCULATE añadiremos la función DATEADD. Como primera expresión de DATEADD, pasaremos el campo de fecha de la tabla calendario (dDate[Fecha]), como segunda expresión indicaremos el número de intervalos que queremos movernos, en nuestro caso -1 porque queremos comparar respecto 1 año atrás, y como tercera expresión indicaremos “Year”. En caso de querer comparar respecto 1 mes atrás, especificaríamos “Month” en lugar de “Year”. ¿Fácil, verdad?
Ahora que tenemos las medidas creadas, escogeremos en las visualizaciones la opción tabla y arrastraremos los siguientes campos en la parte de valores: Campo T-Y de la tabla de fechas, medida Ventas y medida Ventas LY.
Vemos como el importe de T1-18 en la columna de ventas coincide con el importe de T1-19 en la columna Ventas LY, por lo que podemos afirmar que el cálculo de las medidas es correcto.
Lo que haremos ahora es transformar este objeto visual a matriz. Lo único que tenemos que hacer es seleccionar el objeto visual y pulsar la opción de “matriz” en el apartado de visualizaciones. Ya para terminar, moveremos la variable “T-Y” a las columnas, en las filas especificaremos la variable “Clientes” y ya tendremos nuestra matriz creada, ahora solo nos hará falta darle algo de color y añadir un formato de barras proporcionales a las ventas por cliente a la medida ventas.
Para ello pulsaremos la flecha que apunta hacia abajo en la medida de “Ventas” -> Formato condicional -> Barra de datos
Seleccionaremos el color que preferíamos y ya tenemos nuestra tabla terminada
Autor – Bernat Duran – Consultor power BI
¿Quieres el excel de datos y el código para poder copiar y pegar?