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

The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more

Reply
GopVan
Frequent Visitor

Week Number and ISO Week Number in Power Query

I have added a week number column in Power Query and the output was as follows:

 

26/12/2022 - Week 53

...

31/12/2022 - Week 53

01/01/2023 - Week 1

02/01/2023 - Week 2

 

What is the logic behind this numbering? Why does Week 1 include only Jan 1, 2023?

 

GopVan_0-1671610373544.png

 

How can I generate the ISO Week Number in Power Query (DAX) such that Jan 2, 2023, is Week 1?

1 ACCEPTED SOLUTION
GopVan
Frequent Visitor

Thank You @Mahesh0016, found the solution here

View solution in original post

7 REPLIES 7
ccanetta
New Member

This is the equivalent to ISOWEEKNUM (or WEEKNUM 21) that worked for me --> Date.DayOfWeek([Date], Day.Thursday)-1

Pepijn
Frequent Visitor

A shorter formula for ISO-weeks in PBI:

 

Number.Round((Date.DayOfYear(Date.AddDays([Date],3-Date.DayOfWeek([Date])))-4)/7)+1)

 

Explanation:

If the first of january is on a thursday, that is week 1.

If the first of january is on a friday, that is the last week of last year.

So... The thursday is always in the right year.

 

If we grab a random date, and look at the thursday of that week (compensate for the weekday and add 3 to get to thursday)

We can use the function Date.DayOfYear() to determine the amount of days in the year from that point.

Then, substract 3 to get to monday, and again 1 to compensate that weekdays start at 0, but DayOfYear starts at 1. (-4 total)

This, we divide by 7 and round it.

(if thursday is in the old year, the old year is at least 4 days in that week so it should be rounded down. If thursday is in the new year, the new year is at least 4 days in that week so it should be rounded up)

 

This method starts 'counting' at 0, so in the end we compensate with a little +1.

ManeAmol2022
Regular Visitor

Nice, this helped me too, thanks for sharing.

Anonymous
Not applicable

Please look Function for ISO Year/Week number (ISO 8601)) 


NB! Pay attention to offsetindays parameter (by default it equals to zero - it means week starts on Sunday)

o_belov
Advocate II
Advocate II

@Mahesh0016 It works! Thanks a lot!

GopVan
Frequent Visitor

Thank You @Mahesh0016, found the solution here

Mahesh0016
Super User
Super User

let
Source = List.Dates(DateTime.Date(DateTime.LocalNow()), 365, #duration(1, 0, 0, 0)),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Date", type date}}),
#"Weekday Number" = Table.AddColumn(#"Changed Type", "Weekday Number", each Date.DayOfWeek([Date], Day.Monday)+1),

#"ISO Week Number" = Table.AddColumn(#"Weekday Number", "ISO Week Number", each if
Number.RoundDown((Date.DayOfYear([Date])-(Date.DayOfWeek([Date], Day.Monday)+1)+10)/7)=0

then
Number.RoundDown((Date.DayOfYear(#date(Date.Year([Date])-1,12,31))-(Date.DayOfWeek(#date(Date.Year([Date])-1,12,31), Day.Monday)+1)+10)/7)

else if
(Number.RoundDown((Date.DayOfYear([Date])-(Date.DayOfWeek([Date], Day.Monday)+1)+10)/7)=53
and (Date.DayOfWeek(#date(Date.Year([Date]),12,31), Day.Monday)+1<4))

then
1

else
Number.RoundDown((Date.DayOfYear([Date])-(Date.DayOfWeek([Date], Day.Monday)+1)+10)/7))

in
#"ISO Week Number"


@GopVan Did I answer your question? Mark my post as a solution! Appreciate your Kudos !!

Helpful resources

Announcements
November Power BI Update Carousel

Power BI Monthly Update - November 2025

Check out the November 2025 Power BI update to learn about new features.

Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.