Tabla de fechas con DAX para Power BI

Una de las funcionalidades que no puede faltar en un buen reporte de Power BI es una tabla de fechas. A continuación se comparto los pasos y el código que se requiere para que mediante una expresión DAX podamos crearla:

  • En Power BI Desktop, la pestaña modeling damos clic en la opción New Table.
  • Copiamos el siguiente código en la línea de comando visualizada:

Fechas = GENERATE (
CALENDAR( DATE( 2017; 1; 1 ); DATE( 2030; 12; 31 ));
VAR startOfWeek = 1 // Where 1 is Sunday and 7 is Saturday, thus a 3 would be Tuesday
VAR currentDay = [Date]
VAR days = DAY( currentDay )
VAR months = MONTH ( currentDay )
VAR years = YEAR ( currentDay )
VAR nowYear = YEAR( TODAY() )
VAR nowMonth = MONTH( TODAY() )
VAR dayIndex = DATEDIFF( currentDay; TODAY(); DAY) * -1
VAR todayNum = WEEKDAY( TODAY() )
VAR weekIndex = INT( ROUNDDOWN( ( dayIndex + -1 * IF( todayNum + startOfWeek <= 6; todayNum + startOfWeek; todayNum + startOfWeek – 7 )) / 7; 0 ) )
RETURN ROW (
“Año”; years;
“Mes”; months;
“Día”; days;
“Día Index”; dayIndex;
“Semana Index”; weekIndex;
“Semana Día”; WEEKDAY(currentDay;2);
“Semana Nombre”; SWITCH(WEEKDAY(currentDay;2);1;”Lunes”;2;”Martes”;3;”Miercoles”;4;”Jueves”;5;”Viernes”;6;”Sábado”;”Domingo”);
“Quincena”; IF(days<=15;1; 2);
“Quincena Nombre”; IF(days<=15;”1ra Quincena”; “2da Quincena”);
“Mes Index”; INT( (years – nowYear ) * 12 + months – nowMonth );
“Año Index”; INT( years – nowYear );
“Año Mes”; INT(years*100)+months;
“Semestre”;IF(months<=6;1; 2);
“Semestre Nombre”;IF(months<=6;”1er Semestre”; “2do Semestre”);
“Trimestre”; IF(months<=3;1; IF(months<=6;2;if(months<=9;3;4)));
“Trimestre Nombre”; IF(months<=3;”1er Trimestre”; IF(months<=6;”2do Trimestre”;if(months<=9;”3er Trimestre”;”4to Trimestre”)));
“Bimestre”; IF(months<=2;1; IF(months<=4;2;if(months<=6;3;if(months<=8;4;if(months<=10;5;6)))));
“Bimestre Nombre”; IF(months<=2;”ENE-FEB”; IF(months<=4;”MAR-ABR”;if(months<=6;”MAY-JUN”;if(months<=8;”JUL-AGO”;if(months<=10;”SEP-OCT”;”NOV-DIC”)))));
“Cuatrimestre”; IF(months<=4;1; IF(months<=8;2;3));
“Cuatrimestre Nombre”; IF(months<=4;”1er Cuatrimestre”; IF(months<=8;”2do Cuatrimestre”;”3er Cuatrimestre”));
“Mes Ingles”; SWITCH(months;1;”January”;2;”February”;3;”March”;4;”April”;5;”May”;6;”June”;7;”July”;8;”August”;9;”September”;10;”October”;11;”November”;12;”December”;”Invalid Month Number”);
“Mes Español”; SWITCH(months;1;”Enero”;2;”Febrero”;3;”Marzo”;4;”Abril”;5;”Mayo”;6;”Junio”;7;”Julio”;8;”Agosto”;9;”Septiembre”;10;”Octobre”;11;”Noviembre”;12;”Diciembre”;”Mes Invalido”)
)
)

Consideraciones del comando establecido:

  • Rango de fechas desde 2017 hasta 2030.
  • Se incluyen meses en español e ingles.
  • se definen semestres, trimestres, cuatrimestres, bimestres y quincenas en número y nombre.
  • Se definen los días de la semana en número y nombre.

Definiciones adicionales en Power BI Desktop:

  • Se recomienda definir la tabla, como tabla de fechas.
  • Los campos de tipo texto se recomienda que se ordenen por el campo de tipo número correspondiente.
    • Ej. Mes Español ordenarlo por Mes
    • Ej. Cuatrimestre Nombre ordenarlo por Cuatrimestre
  • Crear las jerarquías para que en los gráficos podamos usar drill down como:
    • Año, semestre, mes, quincena, día
    • Año, trimestre, mes
    • Año, bimestre, mes, día
    • Entre otros…

Pregunta de interes:

¿Alguien sabe como agregarle los días festivos a esta tabla de fechas?

En el siguiente archivo encontraran el calendario desde el año 2000 hasta el año actual con festivos de estados unidos automatizados:

  • DAX Date Template
  • La tabla Date tiene automatizados los festivos de estados unidos, Francia, España, Inglaterra, entre otros países.
  • La tabla DateESCO tiene un intento de agregar los festivos de Colombia, pero aún no logro ajustar los festivos cambiantes. Si alguien puede ayudar.
  • de resto funciona igual a la otra formula, solo que los comentarios están en español en todo el código.

Archivo original y sin cambios publicado en DaxDateTemplate 


Publicación Original:https://myprojectserver.wordpress.com/2018/06/20/tabla-de-fechas-con-dax-para-power-bi/

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

This site uses Akismet to reduce spam. Learn how your comment data is processed.