Semana ISO, la fórmula de Ron de Bruin en DAX y en M

 In Power Bi

Ron de Bruin es un profesional de Excel que escribió y publicó en su blog una fórmula para calcular el número de semana ISO de cualquier fecha. La fórmula propuesta por Ron utiliza los nombres de las funciones de Excel en inglés pero he realizado la traducción utilizando funciones en español:

=ENTERO((A2-FECHA(AÑO(A2-DIASEM(A2-1)+4),1,3)+DIASEM(FECHA(AÑO(A2-DIASEM(A2-1)+4),1,3))+5)/7)

Me he permitido el lujo de trasladar la fórmula de Ron de Bruin a los entornos en los que trabajo ahora mismo y donde la necesito: DAX y Power Query

 

La fórmula de Ron de Bruin, trasladada al lenguaje M de Power Query queda como sigue:

Number.RoundDown((Int64.From([Fecha])- Int64.From(#date(Date.Year(Date.From(Int64.From([Fecha])-(if (Date.DayOfWeek(Date.AddDays([Fecha],1)))=0 then 7 else (Date.DayOfWeek(Date.AddDays([Fecha],1))))+4)),1,3))+
(if (Date.DayOfWeek(Date.AddDays((#date(Date.Year(Date.From(Int64.From([Fecha])-(if (Date.DayOfWeek(Date.AddDays([Fecha],1)))=0 then 7 else (Date.DayOfWeek(Date.AddDays([Fecha],2))))+4)),1,3)),1)))=0
then 7 else (Date.DayOfWeek(Date.AddDays((#date(Date.Year(Date.From(Int64.From([Fecha])-(if (Date.DayOfWeek(Date.AddDays([Fecha],1)))=0 then 7 else (Date.DayOfWeek(Date.AddDays([Fecha],1))))+4)),1,3)),2))))+5)/7)

Por el contrario, en lenguaje DAX, podemos calcular la semana ISO con la siguiente fórmula:

ROUNDDOWN((dCalendario[Date]-DATE(year(dCalendario[Date]-WEEKDAY(dCalendario[Date]-1)+4);1;3)+WEEKDAY(DATE(YEAR(dCalendario[Date]-WEEKDAY(dCalendario[Date]-1)+4);1;3))+5)/7;0)

 

La semana ISO, tan empleada en las empresas agricolas, ya no es obstáculo para nuestros análisis en Power BI.

 

 

 

 

Recommended Posts

Leave a Comment

Al continuar utilizando nuestro sitio web, usted acepta el uso de cookies. Más información

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra POLÍTICA DE COOKIES, pinche el enlace para mayor información. Además puede consultar nuestro AVISO LEGAL y nuestra página de POLÍTICA DE PRIVACIDAD.

Cerrar