In the world of business analytics, measuring growth over different time periods is crucial for understanding performance trends. As a data analyst or business intelligence professional, you’ll often need to compare results across months, years, weeks, and quarters.
In Power BI, these comparisons are made easy using DAX (Data Analysis Expressions). In this blog, we’ll cover four essential growth metrics:
- MoM (Month-over-Month) Growth
- YoY (Year-over-Year) Growth
- WoW (Week-over-Week) Growth
- QoQ (Quarter-over-Quarter) Growth
We’ll explain what each means, why it’s important, and how to calculate it using DAX formulas.
1. Month-over-Month (MoM) Growth
What is MoM Growth?
The % change in a value from one month to the next is measured by MoM Growth. It’s useful for detecting short-term trends.
DAX Formula:
MoM Growth % =
VAR CurrentMonthSales = SUM('Sales'[SalesAmount])
VAR PreviousMonthSales =
CALCULATE(
SUM('Sales'[SalesAmount]),
DATEADD('Date'[Date], -1, MONTH)
)
RETURN
DIVIDE(CurrentMonthSales - PreviousMonthSales, PreviousMonthSales)
How it Works:
- SUM(‘Sales'[SalesAmount]) calculates total sales for the current context.
- DATEADD(…, -1, MONTH) shifts the context back by one month.
- DIVIDE() calculates the growth percentage safely.
2. Year-over-Year (YoY) Growth
What is YoY Growth?
Performance during the same period in the current year is compared to that of the prior year using year-over-year growth. This is ideal for analyzing seasonal performance.
DAX Formula:
YoY Growth % =
VAR CurrentYearSales = SUM('Sales'[SalesAmount])
VAR PreviousYearSales =
CALCULATE(
SUM('Sales'[SalesAmount]),
SAMEPERIODLASTYEAR('Date'[Date])
)
RETURN
DIVIDE(CurrentYearSales - PreviousYearSales, PreviousYearSales)
How it Works:
- SAMEPERIODLASTYEAR() automatically shifts the date filter back by one year.
- The difference is divided by the previous year’s value for a percentage.
3. Week-over-Week (WoW) Growth
What is WoW Growth?
WoW Growth makes a comparison between this week’s value and last week’s. It’s often used for fast-moving metrics like website traffic, orders, or daily sales.
DAX Formula:
WoW Growth % =
VAR CurrentWeekSales = SUM('Sales'[SalesAmount])
VAR PreviousWeekSales =
CALCULATE(
SUM('Sales'[SalesAmount]),
DATEADD('Date'[Date], -7, DAY)
)
RETURN
DIVIDE(CurrentWeekSales - PreviousWeekSales, PreviousWeekSales)
How it Works:
- DATEADD(…, -7, DAY) moves the filter exactly 7 days back.
- Ideal for datasets where week numbers may not be stored directly.
4. Quarter-over-Quarter (QoQ) Growth
What is QoQ Growth?
The current quarter’s value is compared to the prior quarter’s value using QoQ Growth. Investor reporting and strategic planning both benefit from this.
DAX Formula:
QoQ Growth % =
VAR CurrentQuarterSales = SUM('Sales'[SalesAmount])
VAR PreviousQuarterSales =
CALCULATE(
SUM('Sales'[SalesAmount]),
DATEADD('Date'[Date], -1, QUARTER)
)
RETURN
DIVIDE(CurrentQuarterSales - PreviousQuarterSales, PreviousQuarterSales)
How it Works:
- DATEADD(…, -1, QUARTER) moves back one quarter.
- Measures performance over three-month periods.
Best Practices for Time-Based Growth Calculations in Power BI
- Use a Proper Date Table – Ensure your model has a dedicated date table marked as a Date Table in Power BI.
- Avoid Hardcoding Dates – Always use dynamic functions like DATEADD() or SAMEPERIODLASTYEAR() for flexibility.
- Format as Percentages – In Power BI, format your growth measures as percentages for better readability.
- Handle Division by Zero – Always use DIVIDE() instead of / to avoid errors.
- Validate with Filters – Cross-check growth rates by applying different date filters in visuals.
Final Thoughts
By mastering MoM, YoY, WoW, and QoQ growth calculations in DAX, you’ll unlock powerful insights into business performance over different time frames. These metrics help decision-makers spot trends, identify challenges, and measure the impact of strategies.
In Power BI, these formulas are reusable and can be applied to any metric—sales, profit, customers, or even KPIs like churn rate.
FAQs
Q1: Do I need a date table for these formulas?
Yes, a proper date table is essential for time intelligence functions like DATEADD and SAMEPERIODLASTYEAR.
Q2: Can I use these formulas for revenue instead of sales?
Absolutely. Just replace SalesAmount with your revenue column or measure.
Q3: What if my dataset doesn’t have continuous dates?
You’ll need to create a complete date table and relate it to your fact table.
Q4: Are these growth formulas dynamic?
Yes, they automatically adjust based on filters like year, month, or region.
Q5: Can I calculate cumulative growth?
Yes, you can combine these formulas with running total measures for cumulative analysis.

Wow, marvelous blog layout! How long have you
been blogging for? you made blogging look easy.
The overall look of your web site is fantastic, let alone the
content!
Hello to every body, it’s my first pay a visit
of this weblog; this weblog includes remarkable and really fine information for readers.
I was suggested this website by my cousin. I am not sure whether this post is
written by him as nobody else know such detailed about my problem.
You are amazing! Thanks!
you are actually a excellent webmaster. The website loading velocity is amazing.
It seems that you are doing any distinctive trick.
Moreover, The contents are masterwork. you have done a fantastic job in this matter!
Hi, I believe your web site could be having internet browser compatibility problems.
Whenever I look at your site in Safari, it
looks fine however, if opening in IE, it has some overlapping issues.
I merely wanted to provide you with a quick heads up! Besides
that, great blog!
Hey there! Someone in my Facebook group shared this website with us so I
came to check it out. I’m definitely enjoying the information. I’m
bookmarking and will be tweeting this to my followers!
Terrific blog and terrific design and style.
Hey there would you mind sharing which blog platform you’re using?
I’m looking to start my own blog in the near future but I’m
having a tough time making a decision between BlogEngine/Wordpress/B2evolution and Drupal.
The reason I ask is because your design and style seems different then most blogs
and I’m looking for something unique. P.S My apologies for getting off-topic but I had to ask!
Very nice post. I just stumbled upon your weblog and wanted to
say that I’ve truly enjoyed surfing around your blog posts.
After all I’ll be subscribing to your rss feed and I
hope you write again soon!
This article is in fact a pleasant one it helps new
net users, who are wishing for blogging.