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

The ultimate Microsoft Fabric, Power BI, Azure AI & SQL learning event! Join us in Las Vegas from March 26-28, 2024. Use code MSCUST for a $100 discount. Register Now

Reply
SSJ011
Frequent Visitor

Leap year week number

Good Day ,

 

Happy New year to all.

My week number ends in 52 of every year except leap year. Need your assistance in getting the week number for weeks starting on Monday.

 

As 2020 was a leap year there are 53 weeks and 1st Jan to 3rd Jan will be part of a 53 week. Can you advise which DAX function should be used to solve this, as weeknum function is not giving the correct answer.

 

Regards

Sachin

 

1 ACCEPTED SOLUTION
Icey
Community Support
Community Support

Hi @SSJ011 ,

 

Please check if this is what you want:

Calendar = 
ADDCOLUMNS (
    CALENDAR ( DATE ( 2020, 1, 1 ), DATE ( 2021, 12, 31 ) ),
    "Year", YEAR ( [Date] ),
    "WeekDay", WEEKDAY ( [Date], 2 ),
    "WeekNum", WEEKNUM ( [Date], 2 )
)
Modified WeekNum 1 = 
VAR FirstDay =
    CALCULATE (
        MIN ( 'Calendar'[Date] ),
        FILTER ( 'Calendar', 'Calendar'[Year] = EARLIER ( 'Calendar'[Year] ) )
    )
VAR MinYear =
    MIN ( 'Calendar'[Year] )
RETURN
    IF (
        [Year] = MinYear,
        [WeekNum],
        COUNTROWS (
            FILTER (
                SELECTCOLUMNS (
                    GENERATESERIES ( FirstDay, 'Calendar'[Date] ),
                    "Dates", [Value]
                ),
                WEEKDAY ( [Dates], 2 ) = 1
            )
        )
    )
Modified WeekNum 2 = 
VAR MaxWeekNumLastYear =
    CALCULATE (
        MAX ( [Modified WeekNum 1] ),
        FILTER ( 'Calendar', 'Calendar'[Year] = EARLIER ( 'Calendar'[Year] ) - 1 )
    )
RETURN
    IF ( [Modified WeekNum 1] = BLANK (), MaxWeekNumLastYear, [Modified WeekNum 1] )

week1.JPG

week2.JPG

 

 

Best regards

Icey

 

If this post helps, then consider Accepting it as the solution to help other members find it faster.

View solution in original post

3 REPLIES 3
Icey
Community Support
Community Support

Hi @SSJ011 ,

 

Please check if this is what you want:

Calendar = 
ADDCOLUMNS (
    CALENDAR ( DATE ( 2020, 1, 1 ), DATE ( 2021, 12, 31 ) ),
    "Year", YEAR ( [Date] ),
    "WeekDay", WEEKDAY ( [Date], 2 ),
    "WeekNum", WEEKNUM ( [Date], 2 )
)
Modified WeekNum 1 = 
VAR FirstDay =
    CALCULATE (
        MIN ( 'Calendar'[Date] ),
        FILTER ( 'Calendar', 'Calendar'[Year] = EARLIER ( 'Calendar'[Year] ) )
    )
VAR MinYear =
    MIN ( 'Calendar'[Year] )
RETURN
    IF (
        [Year] = MinYear,
        [WeekNum],
        COUNTROWS (
            FILTER (
                SELECTCOLUMNS (
                    GENERATESERIES ( FirstDay, 'Calendar'[Date] ),
                    "Dates", [Value]
                ),
                WEEKDAY ( [Dates], 2 ) = 1
            )
        )
    )
Modified WeekNum 2 = 
VAR MaxWeekNumLastYear =
    CALCULATE (
        MAX ( [Modified WeekNum 1] ),
        FILTER ( 'Calendar', 'Calendar'[Year] = EARLIER ( 'Calendar'[Year] ) - 1 )
    )
RETURN
    IF ( [Modified WeekNum 1] = BLANK (), MaxWeekNumLastYear, [Modified WeekNum 1] )

week1.JPG

week2.JPG

 

 

Best regards

Icey

 

If this post helps, then consider Accepting it as the solution to help other members find it faster.

ryan_mayu
Super User
Super User

@SSJ011 

I have some questions about this.

Does your week always have 7 days?

What about the first week of 2021?

2021 is not a leap year. Will 2021/12/27-2022/1/2 be in the same week?

1.PNG

What's more, I am not sure about your mininum date in your data. if your date starts on 2020/1/1. The first week only contains 5 days.

1.PNG

 

 





Did I answer your question? Mark my post as a solution!

Proud to be a Super User!




amitchandak
Super User
Super User

@SSJ011 , Try these columns

Week Start date = 'Date'[Date]+-1*WEEKDAY('Date'[Date],2)+1 //use 1 for sunday week WEEKDAY('Date'[Date],1) 
Week End date = 'Date'[Date]+ 7-1*WEEKDAY('Date'[Date],2) //use 1 for sunday week 

 

min week start of year = minx(filter('Date',year([Week Start date])=earlier(year(Week Start date]))),[Week Start date])
week No = quotient(datediff([min week start of year],[date],day),7)+1

Check if the Week no is what you are looking at

 

 

Helpful resources

Announcements
Fabric Community Conference

Microsoft Fabric Community Conference

Join us at our first-ever Microsoft Fabric Community Conference, March 26-28, 2024 in Las Vegas with 100+ sessions by community experts and Microsoft engineering.

February 2024 Update Carousel

Power BI Monthly Update - February 2024

Check out the February 2024 Power BI update to learn about new features.

Fabric Career Hub

Microsoft Fabric Career Hub

Explore career paths and learn resources in Fabric.

Fabric Partner Community

Microsoft Fabric Partner Community

Engage with the Fabric engineering team, hear of product updates, business opportunities, and resources in the Fabric Partner Community.