Forum Discussion

Syndicate_Admin's avatar
Syndicate_Admin
Icon for Administrator rankAdministrator
3 years ago

Weekofyear no funciona

Me dice que el 1 de enero de 2023 es la semana 1, no es la semana 53.

Estoy en Europa.

¿Qué corrección puedo usar como columna personalizada en el editor de consultas?

2 Replies

  • Hi, @StephenF

    Este es el resultado predeterminado en las funciones DAX.

    Si desea que el 1 de enero de 2023 sea la semana 53, puede probar este método.

    Week = 
    IF (
        [Date] = DATE ( 2023, 1, 1 ),
        WEEKNUM ( [Date] - 1, 2 ),
        IF ( [Date] > DATE ( 2023, 1, 1 ), WEEKNUM ( [Date], 2 ) - 1, [Weeknum] )
    )

    Espero que pueda ayudarte.

    Saludos

    Equipo de apoyo comunitario _Charlotte

    Si esta publicación ayuda, considere Aceptarlo como la solución para ayudar a los otros miembros a encontrarlo más rápidamente.

  • Hola

    Si desea crear una columna con el número de semana ISO en su tabla de fechas, aquí hay una fórmula paso a paso para calcular el número de semana según ISO (DateRef es la columna con la fecha en la tabla de fechas):

    //Calculate week num ISO (Europe) in 4 steps
    //1. Calculate Thursday of week
    InsertCurrThursday = Table.AddColumn(InsertMonthEnding, "CurrThursday", each Date.AddDays([DateRef], -Date.DayOfWeek([DateRef],1) + 3), type date),
    //2. Calculate 1st january of the year (cf step 1)
    InsertFirstJan = Table.AddColumn(InsertCurrThursday, "FirstJan", each#date(Date.Year([CurrThursday]),1,1),type date),
    //3. Calculate number of days betweeen thursday and 1st january
    // (cf step 1 and 2)
    InsertDuration= Table.AddColumn(InsertFirstJan, "Duration", each Duration.Days(Duration.From([CurrThursday] - [FirstJan])), type number),
    //4. Divide the number of days from step 3 by 7
    //round down and add 1
    InsertISOWeekNum = Table.AddColumn(InsertDuration, "NumSemISO", each Number.RoundDown([Duration]/7)+1),
    ChangeType5=Table.TransformColumnTypes(InsertISOWeekNum,{{"NumSemISO", Int64.Type}}),
    Format2Chiffres=Table.AddColumn(ChangeType5, "SemaineISO", each Number.ToText([NumSemISO],"D2"), type text),// D2 means format with 2 Digits
    //Delete unusefull columns
    RemovedColumns = Table.RemoveColumns(Format2Chiffres, {"CurrThursday","FirstJan","Duration", "NumSemISO"})

    Espero que ayude