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

Be one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now

Reply
Anonymous
Not applicable

Número de semana incorrecto al final del año / comienzo

Hola

Tengo un problema con los números de semanas en una tabla de fechas donde necesito la fecha 2020-12-28 a 2021-01-3 para ser la semana 53, y 2021-01-04 a 2021-01-10 para ser w 1. La semana 2 comenzará en 2021-01-11. Como se muestra en la imagen de abajo, esto no es lo que obtengo usando la forumula para Weeknumber de la siguiente manera: "WeekNumber", each Date.WeekOfYear(([Date]),Day.Monday)).

¿Alguien tiene alguna sugerencia sobre cómo solucionar esto?

Weeks.PNG

1 ACCEPTED SOLUTION
AilleryO
Memorable Member
Memorable Member

Hola

En su primera captura de pantalla, parece que el número de semanas se ordena como texto, así que creo que si los formatea como números, o usa 01 en lugar de 1 debería hacer el truco.

El número de captura de pantalla es más extraño, ¿lo ordenas por números de semana?

Que tengas un buen día

View solution in original post

15 REPLIES 15
Syndicate_Admin
Administrator
Administrator

Por favor, busque la función para el número ISO año/semana (ISO 8601))


¡NB! Preste atención al parámetro offsetindays (por defecto es igual a cero, significa que la semana comienza el domingo)

Syndicate_Admin
Administrator
Administrator

Mientras no haya una característica directa de Microsoft para ISO-weeks,

Sugeriría la siguiente solución que supongo que debería ser la solución más eficiente:

= Table.AddColumn(#"Hinzugefügte benutzerdefinierte Spalte1 Wochentag", "Woche", each Date.WeekOfYear(Date.AddDays([Datum],-7)), Int64.Type)

Syndicate_Admin
Administrator
Administrator

Hola Helena,

Usé:

Semana DE LA SEMANA('Fecha',21)

Funciona para mí.

Esta es una función de Excel, no una función de consulta de poder

Syndicate_Admin
Administrator
Administrator

Encontré en este enlace una respuesta muy simple <https://blog.gbrueckl.at/2012/04/iso-8601-week-in-dax/>

Simplemente insertando otro parámetro indo la función de conversión WEEKNUM.

WEEKNUM([Fecha],2) --> WEEKNUM([Fecha],21)

Parece ser una nueva característica según DAX Guide, actualiza enero 2021.

Para aquellos que quieren saber más al respecto :

https://dax.guide/weeknum/

Gracias por la información 🙂

AilleryO
Memorable Member
Memorable Member

Hola

En su primera captura de pantalla, parece que el número de semanas se ordena como texto, así que creo que si los formatea como números, o usa 01 en lugar de 1 debería hacer el truco.

El número de captura de pantalla es más extraño, ¿lo ordenas por números de semana?

Que tengas un buen día

Anonymous
Not applicable

Eso resolvió ambas capturas de pantalla, gracias!

FrankAT
Community Champion
Community Champion

Hola @helenawickstrom

Power Query no puede calcular la semana de calender ISO. Tienes que hacerlo manulally con una función personalizada como esta:

// This function expects a valid date as argument
let
    fxWeekOfCalendar = (Data as date) =>
    let
        Weekday = Date.DayOfWeek(Data) + 1,
        Part1 = Number.From(Data) - Weekday + 11,
        Part2 = Number.From(#date(Date.Year(Date.From(Number.From(Data) + 4 - Weekday)),1,1)),
        Part3 = (Part1 - Part2) / 7,
        Tranc = Part3 - Number.Mod(Part3, 1)
    in
        Tranc
in
    fxWeekOfCalendar

04-11-_2020_12-53-19.png

Con saludos amables desde la ciudad donde la leyenda del 'Pied Piper de Hamelin' está en casa
FrankAT (Orgulloso de ser un Datanaut)

AilleryO
Memorable Member
Memorable Member

@helenawickstrom ,

También tiene una solución para calcular ISO Week Number (primera semana de 4 días), utilizando el código M para agregar al código creando la tabla de fechas:

//Calculate ISO Week Num in 4 steps 
//Step1. Calculate the date of the Thursday of the week 
InsertCurrThursday = Table.AddColumn(InsertMonthEnding, "CurrThursday", each Date.AddDays([DateRef], -Date.DayOfWeek([DateRef],1) + 3), type date),
//Step2. Calculate the 1st january of the date (cf step1) 
InsertFirstJan = Table.AddColumn(InsertCurrThursday, "FirstJan", each #date(Date.Year([CurrThursday]),1,1),type date),
//Step3. Calculate the number of days between the 1st january and Thursday
InsertDuration= Table.AddColumn(InsertFirstJan, "Duration", each Duration.Days(Duration.From([CurrThursday] - [FirstJan])), type number),
//Step4. Divide the number of days (duration)calculated on step3 by 7
//Roud it down and add 1
InsertISOWeekNum = Table.AddColumn(InsertDuration, "NumSemISO", each Number.RoundDown([Duration]/7)+1), ChangeType5=Table.TransformColumnTypes(InsertISOWeekNum,{{"NumSemISO", Int64.Type}}),
//Delete unusefull columns 
RemovedColumns = Table.RemoveColumns(ChangeType5, {"CurrThursday","FirstJan","Duration"})

Estoy usando las reglas definidas por la norma ISO:

Para más detalles :

https://en.wikipedia.org/wiki/ISO_week_date

Espero que ayude

No @AilleryO

Por alguna razón, estoy recibiendo un error de expresión:

Expression.Error: no se reconoció el nombre 'InsertMonthEnding'. Asegúrate de que esté escrito correctamente.

Anonymous
Not applicable

¡Hola, eso funcionó perfecto! ¡Gracias!

Hi,

Perfecto !

Do not forget to accept the solution so others can find it 😉

Gracias and good day

Anonymous
Not applicable

Hola de nuevo @AilleryO ,

Me di cuenta de que tengo los problemas con las fechas y semanas no ordenar correctamente usando exactamente la fórmula como tan amablemente recomendado, cualquier idea lo que causa esto? /Helena

Capture.PNGCapture7.png

amitchandak
Super User
Super User

@helenawickstrom , tenga estas columnas en la tabla de fechas

Fecha de inicio de la semana : 'Fecha'[Fecha]+-1*WEEKDAY('Date'[Fecha],2)+1

min week start of year á minx(filter('Date',[Year] ?earlier([Year])),[Week Start date])
semana No - cociente(datediff([min week start of year],[date],day),7)+1

Join us as experts from around the world come together to shape the future of data and AI!
At the Microsoft Analytics Community Conference, global leaders and influential voices are stepping up to share their knowledge and help you master the latest in Microsoft Fabric, Copilot, and Purview.
️ November 12th-14th, 2024
 Online Event
Register Here

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!

Dec Fabric Community Survey

We want your feedback!

Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors