Artículos de Tecnología > Data Science

Power BI: desarrolla dimensiones de calendario con el lenguaje M de forma práctica

David Neves
David Neves
capa

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?

Calendario Estático

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:

![imagen de la lista]

Hecho esto, ahora transformemos la lista en una tabla. Haz clic encima de la lista y luego clic en A la tabla.

![imagen de la lista para transforma en tabla] ![imagen de la tabla]

Calendario Dinámico

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.

Mejorando la tabla

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.

agregando columna

En este caso, agregamos las columnas Año, Mes, Trimestre y Nombre del día, obteniendo el siguiente resultado:

agregando columnas año, mes, trimestre y nombre del día

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.

Ir más allá

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.

img-autor

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.

Créditos

Escrito y producción técnica:

Producción didáctica:

Traducción:

Artículos de Tecnología > Data Science

En Alura encontrarás variados cursos sobre Data Science. ¡Comienza ahora!

Precios en:
USD
  • USD
  • BOB
  • CLP
  • COP
  • USD
  • PEN
  • MXN
  • UYU

Semestral

  • 273 cursos

    Cursos de Programación, Front End, Data Science, Innovación y Gestión.

  • Videos y actividades 100% en Español
  • Certificado de participación
  • Estudia las 24 horas, los 7 días de la semana
  • Foro y comunidad exclusiva para resolver tus dudas
  • Luri, la inteligencia artificial de Alura

    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

  • Acceso a todo el contenido de la plataforma por 6 meses
US$ 65.90
un solo pago de US$ 65.90
¡QUIERO EMPEZAR A ESTUDIAR!

Paga en moneda local en los siguientes países

Anual

  • 273 cursos

    Cursos de Programación, Front End, Data Science, Innovación y Gestión.

  • Videos y actividades 100% en Español
  • Certificado de participación
  • Estudia las 24 horas, los 7 días de la semana
  • Foro y comunidad exclusiva para resolver tus dudas
  • Luri, la inteligencia artificial de Alura

    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

  • Acceso a todo el contenido de la plataforma por 12 meses
US$ 99.90
un solo pago de US$ 99.90
¡QUIERO EMPEZAR A ESTUDIAR!

Paga en moneda local en los siguientes países

Acceso a todos
los cursos

Estudia las 24 horas,
dónde y cuándo quieras

Nuevos cursos
cada semana