How to Calculate MoM, YoY, WoW, and QoQ Growth in Power BI using DAX
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.