WEEKNUM DAX Function in Power BI
The WEEKNUM function in DAX returns the week number of a given date.
• By default, it considers January 1st as the start of week 1.
• We can also specify which day of the week is considered the first day (Sunday or Monday).
DAX Syntax WEEKNUM(date[, return_type])
The function has the following parameters:
- date: A valid date (can be a column with dates, or a single date value).
- return_type: It is an optional parameter.
- Defines which day the week starts on.
- If omitted → defaults to 1 (week starts on Sunday).
Example: Let’s create a calculated column in Power BI.
DAX
The output of the above code is shown below:

Example: Adding Year + Week for reporting. We can combine year and week number to create a unique identifier. This is useful for chronological sorting and time intelligence calculations.
DAX
YearWeek = YEAR('Sales'[Order Date]) * 100 + WEEKNUM('Sales'[Order Date], 2)
The output of the above code is shown below:

Note: At the start of every year, the week number resets back to 1, even if the new year started mid-week.

Example: Weekly Sales Aggregation. To calculate total sales per week.
DAX
Weekly Sales = CALCULATE( SUM('Sales'[Sales]), // Step 1: Sum of Sales for the current context ALLEXCEPT('Sales', 'Sales'[YearWeek]) // Step 2: Keep only YearWeek context, ignore other filters )
Example: Rolling 4-Week Average. Instead of monthly, we may want rolling weekly averages.
DAX
Rolling 4 Week Avg = AVERAGEX( DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -28, DAY), CALCULATE(SUM('Sales'[SalesAmount])) )
Gives moving average across last 4 weeks.
Working of the code: • Iterates over each date in the 28-day window.
• For each date, it evaluates SUM(Sales[SalesAmount]).
• Then it averages all those daily sales values.
Result = Average daily sales over the last 28 days.