Rolling X is a useful feature that enables you to calculate the cumulative total or average of a specific metric over a defined period of time. It is commonly used in financial analysis, sales forecasting, and other data-driven processes.

For example, if X=3, rolling 3 months of sales will be the sum or average of the sales for the past three months, and this period will update each month to include the most recent three months.

In this article, I will walk you through different ways to calculate rolling X months in Power BI, using DAX formulas.

Read to learn more.

**Table of Contents**show

## Introduction

To calculate rolling X months in Power BI, you need a date column that contains the dates that you want to calculate. Once you have your dates table set up, you can do some great data-based analysis.

Also, you must create a measure for the value you want to calculate using any aggregation function such as

, etc. You will use this measure to calculate the rolling X months value.**SUM, AVERAGE, MIN, MAX**

In Power BI, you can calculate rolling X months in different ways, using different functions such as the

functions, etc. I will explain each of them.**DATESINPERIOD, EARLIER, RANKX, DATESBETWEEN**

## 1. Using the DATESINPERIOD function

You can use the

function to calculate rolling X months by following the steps below:**DATESINPERIOD **

The first thing to do is to create a measure for the value you want to calculate. This measure will be used to calculate the rolling X months value. For example, if you want to calculate the rolling X months average, you will use the ** AVERAGE **function.

**Average_Sales = AVERAGE(SalesTable[SalesAmount])**

After that, create a measure for the rolling X months. To do that, use the following DAX formula for the measure you created for the rolling X months.

`Rolling X Months = CALCULATE ( [Average_Sales], DATESINPERIOD ( 'Date'[Date], MAX ( 'Date'[Date] ), X, MONTH ) )`

Replace

with the name of the measure you created in the first step (I used the one I created in this example). Replace **[Average_Sales]****X **with the number of months you want to include in the rolling calculation.

## 2. Using the EARLIER function

You can also use the

function to create a rolling X months calculation. To do that, follow the below steps:**EARLIER **

Create a measure for the value you want to calculate (just like I did earlier). Then create a measure for the rolling X months using the following DAX formula. Use the following DAX formula:

`Rolling X Months = VAR CurrentDate = MAX ( 'Date'[Date] ) RETURN CALCULATE ( [Your Measure], FILTER ( ALL ( 'Date' ), 'Date'[Date] >= DATEADD ( CurrentDate, -X, MONTH ) && 'Date'[Date] <= CurrentDate ) )`

Replace `[Your Measure]`

with the name of the measure you created in step 1, and replace **X **with the number of months you want to include in the rolling calculation.

The first line defines a variable called **CurrentDate**. You can replace it in this formula with any date column or variable that contains the current date you want to use as a reference point for the rolling X months period.

*NB: The ***EARLIER ***function is not used in the above formula, but can be used in a similar context to reference a previous value.*

## 3. Using the DATESBETWEEN function

To use the

function, create a measure for the value you want to calculate, and create a measure for the rolling X months using the following DAX formula:**DATESBETWEEN **

`Rolling X Months = CALCULATE ( [Your Measure], DATESBETWEEN ( 'Date'[Date], DATEADD ( LASTDATE ( 'Date'[Date] ), -X, MONTH ), LASTDATE ( 'Date'[Date] ) ) )`

Replace

with the name of the measure you created in step 2, and replace **[Your Measure]**

with the number of months you want to include in the rolling X.**X**

## 4. Using the RANKX function

Finally, you can use the

function to create a rolling X months calculation through the following steps:**RANKX **

Create a measure for the value you want to calculate, and then create a measure for the rolling X months using the following DAX formula:

`Rolling X Months = VAR SelectedDate = MAX ( 'Date'[Date] ) VAR DatesRanked = RANKX ( ALL ( 'Date' ), 'Date'[Date],, ASC ) VAR RollingDates = FILTER ( ALLSELECTED ( 'Date' ), DatesRanked >= DatesRanked - X && DatesRanked <= DatesRanked ) RETURN CALCULATE ( [Your Measure], 'Date'[Date] IN RollingDates, ALLSELECTED ( 'Date' ) )`

Replace** [Your Measure] **with the name of the measure you created in step 1, and replace

`X`

with the number of months, you want to include in the rolling calculation.## Conclusion

Calculating rolling X months in Power BI is a powerful technique that allows you to explore data trends and patterns over a specified period of time, and there are multiple ways to calculate it depending on the data and the specific requirements.

The

and **DATESINPERIOD, EARLIER, **

functions can all be used to calculate rolling X months, and each formula has its advantages and limitations.**RANKX**

By using one of these formulas, you can create a rolling X months calculation that fits your needs and helps you gain insights from your data.

I hope you understood these steps.

Thanks for reading!