Month-over-month change %
Compare each month with the month before it.
Sales MoM % =
VAR CurrentMonth = [Total Sales]
VAR PriorMonth =
CALCULATE([Total Sales], DATEADD('Date'[Date], -1, MONTH))
RETURN
DIVIDE(CurrentMonth - PriorMonth, PriorMonth)How it works
DATEADD moves every date in the current context back by one month, then [Total Sales] is calculated for that earlier period. The change is expressed relative to the earlier month.
Because DATEADD works on whole periods, the measure behaves correctly at month level and above. At day level the previous month's matching day is used.
What your model needs
- A date table named 'Date' with one row per day and no gaps, marked as the date table in Power BI (Table tools > Mark as date table). - A one-to-many relationship from 'Date'[Date] to the date column of the Sales table (for example Sales[OrderDate]). - Total Sales = SUM(Sales[Amount]) (called [Total Sales]).
Small example
Input data
Month | Total Sales
Jan 2024 | 80,000
Feb 2024 | 92,000Expected result
Month | Sales MoM %
Jan 2024 | (blank)
Feb 2024 | 15.0%Common mistakes and limitations
- Using the measure on a visual that mixes months with other date levels (for example weeks) gives confusing comparisons. Keep the axis at month level. - DATEADD needs a contiguous date column: use the Date table, not a column from a fact table.