Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Syndicate_Admin
Administrator
Administrator

Secuencia de la semana del mes de Power Query

Hola a todos

He creado una columna de semana del mes simplemente usando la función Date.WeekOfMonth para devolver el número de semana por fecha.

Sin embargo, cuando una semana cruza meses, quiero que el número de la semana continúe su secuencia y luego se reinicie el lunes siguiente (mi día de inicio de la semana).

Ejemplo a continuación con el resultado que estoy tratando de lograr con Power Query:

example.png

2 ACCEPTED SOLUTIONS
Syndicate_Admin
Administrator
Administrator

Estos datos son inmutables. No pierda el tiempo tratando de hacer esto en Power Query (es posible que ni siquiera sea posible, ya que tendría que mirar hacia atrás en la numeración de semanas de meses anteriores, de forma recursiva). Utilice una tabla de referencia de calendario externa que tenga esto precalculado.

View solution in original post

Syndicate_Admin
Administrator
Administrator

@lbendlin - Volví a la mesa de dibujo y empecé a pensar en cómo lo haría en Excel. Terminé con la siguiente fórmula de Excel:

=QUOTIENT(DAY([@Date]-WEEKDAY([@Date],3))-1,7)+1

Lo anterior logró el resultado que necesitaba en la hoja de cálculo. Luego traduje lo anterior con funciones equivalentes en Power Query usando:

let 

getWkDay = Date.DayOfWeek([Date], Day.Monday), 

getMonday = Date.AddDays(Date.From([Date]), - getWkDay),

prvMondayMinusOne = Date.Day(getMonday) - 1,

result = Number.IntegerDivide(PrvMondayMinusOne, 7) + 1 //count number of complete weeks up to this date

in result

Con suerte, esto ayudará a cualquier otra persona que intente lograr un resultado similar.

View solution in original post

4 REPLIES 4
Syndicate_Admin
Administrator
Administrator

@lbendlin - Volví a la mesa de dibujo y empecé a pensar en cómo lo haría en Excel. Terminé con la siguiente fórmula de Excel:

=QUOTIENT(DAY([@Date]-WEEKDAY([@Date],3))-1,7)+1

Lo anterior logró el resultado que necesitaba en la hoja de cálculo. Luego traduje lo anterior con funciones equivalentes en Power Query usando:

let 

getWkDay = Date.DayOfWeek([Date], Day.Monday), 

getMonday = Date.AddDays(Date.From([Date]), - getWkDay),

prvMondayMinusOne = Date.Day(getMonday) - 1,

result = Number.IntegerDivide(PrvMondayMinusOne, 7) + 1 //count number of complete weeks up to this date

in result

Con suerte, esto ayudará a cualquier otra persona que intente lograr un resultado similar.

Syndicate_Admin
Administrator
Administrator

Gracias por los consejos @lbendlin.

Tengo una tabla de referencia de fecha que estoy usando y estoy intentando agregar este tipo de secuencia para los números de semana como una nueva columna en la tabla de referencia de fecha (pero sin éxito).

Molestamente, no puedo encontrar una tabla de referencia de calendario en línea con este tipo de secuencia para los números de semana.

Sabiendo que piensa que este es un ejercicio inútil, en su lugar llenaré esta columna manualmente con la secuencia que necesito.

Sí, realmente creo que este es un ejercicio inútil. Si tuviera que hacerlo, para una fecha determinada, encontraría el último mes anterior que comienza en un lunes, y luego usaría List.Accumulate para contar condicionalmente las semanas y los días hasta el día actual. ¡Qué gloriosa pérdida de tiempo 🙂

let
    Source = List.Dates(#date(2024,1,1),71,#duration(1,0,0,0)),
    #"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), {"Date"}, null, ExtraValues.Error),
    #"Added Custom" = Table.AddColumn(#"Converted to Table", "WeekOfMonth", each List.Accumulate({Int64.From(#date(2024,1,1))..Int64.From([Date])},0,(state,current)=>
if Date.DayOfWeek(Date.From(current),Day.Monday)>0 then state
else if Date.Day(Date.From(current))<7 then 1 
else state+1
))
in
    #"Added Custom"
Syndicate_Admin
Administrator
Administrator

Estos datos son inmutables. No pierda el tiempo tratando de hacer esto en Power Query (es posible que ni siquiera sea posible, ya que tendría que mirar hacia atrás en la numeración de semanas de meses anteriores, de forma recursiva). Utilice una tabla de referencia de calendario externa que tenga esto precalculado.

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Prices go up Feb. 11th.

Jan25PBI_Carousel

Power BI Monthly Update - January 2025

Check out the January 2025 Power BI update to learn about new features in Reporting, Modeling, and Data Connectivity.

Jan NL Carousel

Fabric Community Update - January 2025

Find out what's new and trending in the Fabric community.

Top Solution Authors