En este alcance de proyecto, donde es necesario la manipulación de fechas en diversas tablas, es muy importante tener una dimensión calendario para enriquecer los análisis a niveles temporales de forma comparativa, segmentada y centralizada.
Dentro de Microsoft Power BI, existen dos lenguajes que nos posibilitan manipular datos: M y DAX. Ellos son capaces de desarrollar una tabla calendario sin que su creación afecte el desempeño del proyecto.
En este artículo, vamos a comprender las posibilidades de creación dentro del lenguaje M con toda su practicidad de desarrollo y cuándo debemos utilizarlo, dado que existen dos estructuras de calendario. A continuación, veremos los modelos que se pueden desarrollarse y cuáles serían los momentos de aplicarlos. ¿Listo?
Imagina que un proyecto necesita una dimensión calendario que cubra los primeros 60 días de 2023. En este caso, un calendario estático tiene sentido porque las fechas de inicio y fin son fijas.
Por lo tanto, usaremos la función List.Dates()
de la siguiente manera:
List.Dates(Fecha de inicio {tipo data}, cantidad de dias {tipo numerico},valor a incrementar {tipo duracion})
Conociendo la estructura de la función, vamos a configurarla con la función #date()
para la fecha de inicio y la función #duration()
para incrementar un día en cada línea de la tabla.
Al crear una Consulta Nula, se agregó el siguiente código dentro del Editor Avanzado.
let
listaFechas = List.Dates(#date(2023, 01, 01), 60, #duration(1, 0, 0, 0))
in
listaFechas
Tenemos como resultado la siguiente lista:
Hecho esto, ahora transformemos la lista en una tabla. Haz clic encima de la lista y luego clic en A la tabla.
Siguiendo nuestro pensamiento, imaginemos que surge una nueva demanda en la que requiere una dimensión calendario que incluya los datos desde el 01/01/2023 hasta la fecha actual.
En esta situación, aún podemos utilizar la función List.Dates()
, pero necesitamos hacer algunas modificaciones debido a que el resultado anterior es dinámico. Por ejemplo, necesitamos identificar cuántos días han transcurrido desde el inicio hasta la fecha actual.
De esta forma, vamos a asignar los valores de las fechas inicial y final a sus respectivas variables. Para la fecha final, utilizaremos dos funciones: DateTime.LocalNow()
para obtener la fecha y la hora actuales, y la función DateTime.Date()
para extraer solo la fecha de la función anterior.
fechaInicial = #date()
fechaFinal = DateTime.Date(DateTime.LocalNow())
Enseguida, vamos a calcular el número de días haciendo la diferencia entre las fechas final e inicial a través de la función Duration.Days()
numeroDias = Duration.Days(fechaFinal - fechaInicial)
Por último, vamos a poblar la función List.Dates()
con sus parámetros.
let
fechaInicial = #date(2022,01,01),
fechaFinal = DateTime.Date(DateTime.LocalNow()),
numeroDias = Duration.Days(fechaFinal - fechaInicial)
listaFechas = List.Dates(fechaInicial, numeroDias, #duration(1,0,0,0))
in
listaFechas
Así, basta con transformar la lista de fechas en una tabla de la misma forma en que se hizo en el ejemplo estático.
Aprovechando que la dimensión fue creada dentro de Power Query, podemos realizar algunos ajustes que agregan valor analítico, como agregar columnas referentes al nombre del día, mes, año y trimestre. Para ello, necesitamos definir la columna de fechas como el tipo de fecha antes de cualquier modificación.
Hecho esto, solo necesitamos acceder a las opciones de Fecha a través de la pestaña Agregar columna y elegir qué tipo de información temporal queremos obtener.
En este caso, agregamos las columnas Año, Mes, Trimestre y Nombre del día, obteniendo el siguiente resultado:
Observación: Power BI trabaja con la localización, por lo que en este caso los nombres de los días están en portugués.
Las posibilidades de creación son casi infinitas cuando se comprende la estructura de las funciones. Por lo tanto, dejo como sugerencia que leas la documentación referente a las funciones de fechas para que conozcas más sobre manipulación.
Dado que es un lenguaje de tratamiento, nos permite la manipulación de fechas de forma más detallada. Como ejemplo, podemos crear una columna que no solo identifica los días festivos según la fecha evaluada, sino que también proporciona información sobre estos días festivos.
Si tienes interés en aventurarte en el mundo del tratamiento de datos dentro de Power Query, el curso Power BI Desktop: tratamiento de datos en Power Query es un buen punto de partida.
David Neves
Con una trayectoria versátil que abarca el front-end, el back-end y la infraestructura, descubrí mi pasión por desentrañar el potencial de los datos. Hoy, como especialista en Business Intelligence, con enfoque en Power BI, encuentro mi motivación en la difusión de conocimiento de alta calidad.
Escrito y producción técnica:
Producción didáctica:
Traducción:
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana
Paga en moneda local en los siguientes países
Cursos de Programación, Front End, Data Science, Innovación y Gestión.
Luri es nuestra inteligencia artificial que resuelve dudas, da ejemplos prácticos y ayuda a profundizar aún más durante las clases. Puedes conversar con Luri hasta 100 mensajes por semana
Paga en moneda local en los siguientes países
Puedes realizar el pago de tus planes en moneda local en los siguientes países:
País | |||||||
---|---|---|---|---|---|---|---|
Plan Semestral |
487.37
BOB |
69289.36
CLP |
307472.10
COP |
65.90
USD |
264.35
PEN |
1435.53
MXN |
2978.57
UYU |
Plan Anual |
738.82
BOB |
105038.04
CLP |
466107.17
COP |
99.90
USD |
400.74
PEN |
2176.17
MXN |
4515.32
UYU |
Acceso a todos
los cursos
Estudia las 24 horas,
dónde y cuándo quieras
Nuevos cursos
cada semana