¡Bienvenidos, muy buenos días tardes o noches , según donde me leas !
Continuando con la fase 3 tablas calendario:
Una tabla calendario es de suma importancia en Power BI y en otras herramientas de análisis de datos por varias razones fundamentales:
- Facilita el análisis temporal: La mayoría de los análisis de datos están relacionados con el tiempo, ya sea para evaluar tendencias, comparar datos a lo largo del tiempo o realizar análisis de series temporales. La tabla calendario proporciona una estructura lógica y coherente para trabajar con fechas y tiempos.
- Rellenar huecos en los datos: En muchas bases de datos, no se registran datos para todos los días del año. Pueden faltar datos para fines de semana, días festivos o días en los que no hubo transacciones o eventos. Una tabla calendario puede llenar estos huecos y asegurarse de que haya una fila correspondiente para cada fecha, lo que facilita la realización de análisis coherentes.
- Permite realizar comparaciones y agregaciones precisas: Con una tabla calendario, puedes realizar fácilmente comparaciones entre períodos, como mes a mes o año a año. También puedes agregar datos por día, semana, mes o trimestre de manera más precisa y eficiente.
- Soporte para medidas de tiempo: Las medidas de tiempo, como el cálculo de promedios móviles, la detección de estacionalidad y la identificación de tendencias, a menudo requieren una tabla calendario como referencia.
- Visualización de datos: La tabla calendario es esencial para crear gráficos y visualizaciones de datos de series temporales. Puedes utilizarla para definir ejes de tiempo y crear visualizaciones interactivas que permitan a los usuarios explorar los datos a lo largo del tiempo.
- Filtros de fecha personalizados: Al tener una tabla calendario, puedes crear filtros personalizados que permitan a los usuarios seleccionar rangos de fechas específicos para sus análisis. Esto mejora la flexibilidad y la capacidad de exploración de los datos.
- Integración con otras fuentes de datos: Cuando trabajas con múltiples fuentes de datos que tienen información temporal, una tabla calendario puede servir como punto de conexión común entre esas fuentes, lo que facilita la integración y el análisis unificado.
Crear tablas calendario con Power Query, DAX.
Primero, crearemos las tablas calendario desde cero. Primero será con DAX. La teoría es recordar que debemos crear una tabla calendario específica. Ahora bien, como sabemos, primero será revisarlo específicamente con la función.
En DAX tenemos una función que se llama Calendarauto(). ¿Cómo funciona ella? Esta analiza el dataset que se encuentra cargado en Power BI y, con ello, analiza las columnas de fecha y en base a estas crea un mínimo y un máximo automáticamente.
Dim_Calendario(Calendarauto) = CALENDARAUTO() (Imagen 2)
Recordemos que estas funciones devuelven específicamente una tabla. Ahora pasamos a explicar la manera como me gusta para tener el control de la fecha mínima y máxima.
Calendar(), esta función espera revisar dos parámetros, los cuales son fecha de inicio y fecha fin. Teniendo esto claro, estas funciones son elementales para el funcionamiento correcto. Ahora en nuestra tabla de hechos tenemos dos fechas: ship_date y order_date, con las cuales manejamos estas nuestras fechas, debemos elegir específicamente cuál de estas dos seleccionaremos, la mínima y máxima sin perder fechas de rango, dado que Calendar nos creará una lista continuada, desde la mínima y la máxima seleccionada.
Antes de ello, crearemos medidas máximas y mínimas de ambas columnas ship_date y order_date, para validar qué fecha nos sirve. Para la primera, la máxima fecha será:
Maximo de fecha order date = MAX(Fact_Table[Order Date])
Y para la segunda a evaluar será:
Maximo fecha ship date = MAX(Fact_Table[Ship Date]) (Imagen 1)
Si llevamos esto a un objeto visual de tipo tabla, podremos observar que la máxima fecha de Ship date es mayor que la máxima fecha de Order date. Tiene sentido en la lógica de negocio. Entonces, la máxima que debemos tomar será la de Ship date para no perder fecha de ninguna de las dos de mi tabla.
Ahora, para el mínimo de fecha que nos solicita la función Calendar(), debemos hacer lo mismo en ambas columnas pero con la función mínima:
Min fecha ship date = MIN(Fact_Table[Ship Date])
Minima fecha de order date = MIN(Fact_Table[Order Date]) (Imagen 1)
Como podemos apreciar en la imagen, tenemos esta vez la columna de Order date menor que la de Ship date. Sigue teniendo sentido y lógica. Entonces, para la fecha mínima, la candidata en este caso es el mínimo de Order date.
Primero lo crearemos con Calendar().
HACER DOS FUNCIONES CON CALENDAR() Y CON ADDCOLUMNS().
Empecemos con la función Calendar():
- Anio = YEAR(Dim_Calendario[Date])
- Mes = MONTH([Date])
- Nº día semana = WEEKDAY([Date],2)
- Nº Trimestre = QUARTER([Date])
- Nombre del día = UPPER(LEFT(FORMAT([Date],»dddd»,»es»),1))&RIGHT(FORMAT([Date],»dddd»,»es»),LEN(FORMAT([Date],»dddd»,»es»))-1)
- Nombre mes = UPPER(LEFT(FORMAT([Date],»mmmm»,»es»),1))&RIGHT(FORMAT([Date],»mmmm»,»es»),LEN(FORMAT([Date],»mmmm»,»es»))-1)
- Semana = WEEKNUM([Date],21)
- Semana_Compuesta = «Week»&»-«&FORMAT(WEEKNUM([Date],21),»00»)
- SK_Fechas = FORMAT([Date],»yyyymmdd»)
- Trimestre = «Q»&QUARTER([Date]) (Imagen 4)
Ahora procedemos a crearla con AddColumns, que es otra manera que me gusta crear las tablas calendario cuando debo crearlas en DAX.
Dim_calendar (con AddColumns) =
ADDCOLUMNS(CALENDAR(MIN(Fact_Table[Order Date]),MAX(Fact_Table[Ship Date])), «Anio»,YEAR([Date]), «Mes»,MONTH([Date]), «Semana»,WEEKNUM([Date],21), «Nombre Mes»,UPPER(LEFT(FORMAT([Date],»mmmm»,»es»),1))&RIGHT(FORMAT([Date],»mmmm»,»es»),LEN(FORMAT([Date],»mmmm»,»es»))-1), «Nombre día semana»,UPPER(LEFT(FORMAT([Date],»dddd»,»es»),1))&RIGHT(FORMAT([Date],»dddd»,»es»),LEN(FORMAT([Date],»dddd»,»es»))-1), «Nº día semana»,WEEKDAY([Date],2), «Nº Trimestre»,QUARTER([Date]), «Trimestre»,»Q»&QUARTER([Date]), «Mes y año»,FORMAT([Date],»mm»)&»-«&YEAR([Date]), «SK_Fechas»,FORMAT([Date],»YYYYMMDD»), «Semana_Compuesta»,»Week»&»-«&FORMAT(WEEKNUM([Date],21),»00») ) (Imagen 5 y 6)
Ahora procedemos al segundo método del post de hoy que será con Power Query, la creación de una tabla calendario. Primero que todo, creamos un blank query dando clic en la cinta de opciones. Cuando se crea el blank query, recordemos que queremos solo dos columnas: una que contiene el máximo y otra el mínimo.
= Table.SelectColumns(Fact_Table, {«Order Date», «Ship Date»})
Pasamos este código en lenguaje M en el editor avanzado (Imagen 7). Ahora es algo similar, deseamos obtener el mínimo de la columna Order date:
= #date(Date.Year(List.Min(Source[Order Date])),01,01)
Aplicamos este código, el cual, como vemos, extrae el mínimo de la tabla y columna. Posterior a ello, le extraemos el año, pasándolo a date o fecha inicializándolo en el 01 de enero (Imagen 8).
Aplicamos la misma lógica pero ahora para el máximo:
= #date(Date.Year(List.Max(Source[Ship Date])),12,31) (Imagen 9)
Ahora, como deseamos una línea continua desde el máximo al mínimo y este espera un entero, y recuerden que las fechas son enteros, le pasamos el Number.From a cada paso para que cree la lista de fechas:
= {Number.From(Minimo)..Number.From(Maximo)} (Imagen 10)
Como vemos, la lista de números ahora la convertimos a tabla (Imagen 11) y cambiamos el tipo de dato a fecha y tenemos nuestra columna de fecha para empezar a crear mi tabla calendario, pero ahora desde Power Query (Imagen 12).
Ahora, para añadir año, mes, nombre del mes y más acciones base que trae Power Query, es cuestión de seleccionar la columna fecha que creamos y vamos a la cinta de opciones en «Add Column» y buscamos el apartado «From Date & Time». Dentro de este está un botón «Date», el cual arroja un serie de opciones con las cuales puedes estructurar la tabla calendario que vemos en la imagen (Imagen 13)
¡Una tabla calendario es como el mapa del tesoro del mundo de los datos en Power BI!
Es la herramienta que nos guía a través de la jungla temporal de información, llenando huecos, revelando tesoros ocultos en nuestros datos y permitiéndonos viajar en el tiempo con solo unos clics. Así que, ¡agrégame una tabla calendario a mi kit de herramientas de análisis de datos y prepárate para hacer que tus informes sean más sorprendentes que una película de ciencia ficción!
¡Hacer malabares con fechas nunca fue tan divertido y poderoso como con esta tabla mágica!
La próxima edición abordará la creación de las medidas respondiendo las preguntas de negocio.
Business Intelligence Technical.
Perfil linkedin