March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe 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
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?
Solved! Go to Solution.
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
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)
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)
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
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 :
Gracias por la información 🙂
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
Eso resolvió ambas capturas de pantalla, gracias!
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
Con saludos amables desde la ciudad donde la leyenda del 'Pied Piper de Hamelin' está en casa
FrankAT (Orgulloso de ser un Datanaut)
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.
¡Hola, eso funcionó perfecto! ¡Gracias!
Hi,
Perfecto !
Do not forget to accept the solution so others can find it 😉
Gracias and good day
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
@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
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Your insights matter. That’s why we created a quick survey to learn about your experience finding answers to technical questions.
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.