Botón para abrir el Menú Botón para cerrar el Menú
Logo da empresa Alura
Iniciar Sesión Nuestros Planes
Formaciones Conoce a Luri
  • Programación _
  • Front End _
  • Data Science _
  • DevOps _
  • Innovación y Gestión _
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
26/10/2023

Compartir

Mira este artículo:
  1. Calendario Estático
  2. Calendario Dinámico
  3. Mejorando la tabla
  4. Ir más allá

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:

  • David Neves

Producción didáctica:

  • Mylena Alves

Traducción:

  • Ingrid Silva
Artículo Anterior
¿Qué es Qlik?
Siguiente Artículo
Qué es y cómo usar un trigger en SQL

Ver otros artículos sobre Data Science

Navegación

  • Planes
  • Instructores
  • Blog
  • Política de privacidad
  • Términos de uso
  • Sobre nosotros
  • Preguntas frecuentes

¡CONTÁCTANOS!

  • ¡Quiero entrar en contacto!

Blog

  • Programación
  • Data Science
  • Front End
  • Innovación y Gestión
  • DevOps

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

NOVEDADES Y LANZAMIENTOS

Aliados

  • Programa de aceleração Scale-Up Endeavor
  • En Alura somos unas de las Scale-Ups seleccionadas por Endeavor, programa de aceleración de las empresas que más crecen en el país.
  • Growth Academy 2021 do Google For Startups
  • Fuimos unas de las 7 startups seleccionadas por Google For Startups en participar del programa Growth Academy en 2021
Alura

Powered by

Caelum

AOVS Sistemas de Informática S.A CNPJ 05.555.382/0001-33

SÍGUENOS EN NUESTRAS REDES SOCIALES

YouTube Facebook Instagram Linkedin Whatsapp Spotify

Cursos

Cursos de Programación
Lógica de Programación | Java
Cursos de Front End
HTML y CSS | JavaScript | React
Cursos de Data Science
Data Science | Machine Learning | Excel | Base de Datos | Data Visualization | Estadística
Cursos de DevOps
Docker | Linux
Cursos de Innovación y Gestión
Transformación Ágil | Marketing Analytics

Alura

  • Educação em Tecnologia

    • logo fiap FIAP
    • logo casa do codigo Casa do Código
    • logo pm3 PM3 - Cursos de Produto
  • Mais Alura

    • logo alura start START BY Alura
    • logo alura lingua Alura Língua
    • logo alura para empresas Alura Para Empresas
    • logo alura latam Alura LATAM
  • Comunidade

    • logo tech guide Tech Guide
    • logo 7 days of code 7 days of code
    • logo Hipsters ponto Jobs Hipsters ponto Jobs
  • Podcasts

    • logo Hipster Network Hipster Network
    • logo Hipsters ponto Tech Hipsters ponto Tech
    • logo Dev sem fronteiras Dev sem Fronteiras
    • logo Like a Boss Like a Boss
    • logo IA Sob Controle IA Sob Controle
    • logo Mesa de Produto Mesa de Produto
    • logo Decode Decode
    • logo FIAPCast FIAPCast