Tabla de Calendario: ¿Cómo crearlo?

Cuando realizamos el modelamiento de datos para nuestro informe en Power Bi vamos a observar que en la tabla de hechos es casi 100% seguro que tendrás una o más columnas con fechas que servirán para el análisis.

Imagina que por cada columna con fecha necesites crear el año, el mes, la semana o cualquier otra columna que tenga una relación de granularidad con la fecha, ¡estaríamos llenando innecesariamente de columnas a nuestra tabla!

Por ello que se recomienda siempre crear una tabla de calendario y así aprovechar el filtro cruzado entre tablas mejorando el rendimiento de nuestro modelo de datos.

Con el siguiente código DAX podrás crear tu propia tabla de calendario y te guiaré en el paso a paso para configurarlo.

Paso 01: Crear una nueva tabla con DAX.

Con este botón activaremos la barra de fórmula para escribir una expresión DAX para crear una nueva tabla.

Agregar nueva tabla con DAX

Paso 02: Escribir el siguiente código.

DimCalendario =
VAR Dates =
    CALENDAR ( 
        FIRSTDATE ( Tabla[Columna] )
        LASTDATE ( Tabla[Columna] ) 
    )
RETURN
    ADDCOLUMNS (
        Dates,
        "Año"YEAR ( [Date] ),
        "Trimestre"QUARTER ( [Date] ),
        "Mes Nombre Largo"FORMAT ( [Date], "MMMM" ),
        "Mes Nombre Corto"UPPER ( FORMAT ( [Date], "Mmm" ) ),
        "Mes Numero"MONTH ( [Date] ),
        "Semana"WEEKNUM ( [Date], 2 ),
        "Semana ISO"WEEKNUM ( [Date], 21 ),
        "Dia Semana Nombre"FORMAT ( [Date], "DDDD" ),
        "Dia Semana Numero"WEEKDAY ( [Date], 2 ),
        "Dia Mes Numero"FORMAT ( [Date], "D" )
    )

Antes de presionar enter, veamos en detalle cuáles son los valores que debemos cambiar para configurarlo acorde con nuestra tabla de hechos.

Cómo se puede observar, el nombre de la tabla es DimCalendario (dimensión calendario) y se crea una variable (VAR) con el nombre Dates que es básicamente una tabla temporal con todos los días posibles entre el primer y segundo parámetro de la fórmula CALENDAR.

El primer parámetro es el resultado de la fórmula FIRSTDATE que tal cómo su nombre lo indica devuelve la menor de todas las fechas de la columna indicada y del mismo modo pero en sentido inverso para el segundo parámetro utilizando la fórmula LASTDATE.

Una vez creada esta variable, se utiliza la palabra reservada RETURN para indicar que todo lo siguiente es lo que esperamos obtener.

Es así que finalmente al usar la fórmula ADDCOLUMNS se crea varias columnas a partir de la tabla temporal DATES y estas columnas no son nada que más que agrupaciones de fechas

Paso 03: Ordenar columnas de texto con su valor numérico respectivo.

Si omites este paso ocurrirá que cuando utilices los meses en algún objeto visual estos se ordenarán de manera alfabética (Abril, Agosto, Diciembre, Enero, etc.). 

Por tanto, debes seleccionar la columna con el texto del mes y luego ubicar el botón de Ordenar por columna y seleccionar el mes en número, realiza este procedimiento con tantas columnas en texto necesites ordenar por un valor numérico.


Pasos para ordenar una columna texto por una columna numérica

Paso 04: Crear la relación entre tablas.

Ya está casi todo listo, solo nos falta este último paso.

En la vista de modelos, realizamos la acción de arrastrar y soltar la columna DimCalendario[Date] encima de la columna que contiene las fechas de tu tabla de hechos y se generará automáticamente una relación cómo la siguiente imagen:


Relacionando dos tablas

Con esta relación ya hemos terminado y podremos utilizar todas las columnas de fechas en nuestro informe.

CONCLUSIONES

Una tabla de calendario es pieza importante de nuestro modelo de datos, nunca debemos obviarla y configurarla para su correcto uso. En las siguientes entradas veremos algunas fórmulas y trucos para darle mayor provecho a la tabla de calendario.

Publicar un comentario

Artículo Anterior Artículo Siguiente