DigitalAdaption Book a data risk call
Readiness Review Services Case Studies Guides Blog About Book a data risk call
Guides — Power BI Previous Month Comparison DAX

Power BI Previous Month Comparison in DAX

Quick answer

This guide gives UK SME teams a practical implementation path: start with the business question, check the data or workflow, build the smallest useful version, then document what has changed.

This guide gives UK SME teams a practical implementation path: start with the business question, check the data or workflow, build the smallest useful version, then document what has changed.

Book a data risk call View all services
Power BI guide Home / Guides / Power BI

Create a previous-month comparison in Power BI using DAX time intelligence, a proper date table and clear validation checks.

2026-06-16 8 min read min read Digital Adaption On this page
  1. Start with the date table
  2. Build the measures
  3. Handle slicers and incomplete months

Previous-month comparison looks simple until the report has slicers, incomplete months, fiscal calendars or ERP extracts that do not land at the same time each day. This guide shows a reliable pattern for comparing the selected month with the prior month without hard-coding dates or breaking totals. For broader reporting repair work, see the Power BI consultancy and ERP reporting analytics pages.

Practical answer

Create a marked date table, write a base measure first, calculate the previous-month value with DATEADD or PARALLELPERIOD, then validate the result at day, month and total level before adding percentage change.

1 Start with the date table

The comparison should be driven by a dedicated calendar table, not the transaction date column in the fact table. The date table needs one row per date, a relationship to the fact table, and month columns that sort correctly.

If your ERP data uses posting date, invoice date and ship date, decide which one the report is measuring. Mixing date meanings is one of the fastest ways to make a previous-month measure look wrong even when the DAX is technically valid.

2 Build the measures

Start with a base measure. Do not repeat SUM logic inside every time-intelligence measure because it makes reconciliation harder and encourages inconsistent filters.

DATEADD works well when the date table is continuous. PARALLELPERIOD can be easier when you always want the full previous month. Use the version that matches the business question.

Sales Amount =
SUM ( Sales[Net Amount] )

Sales Previous Month =
CALCULATE (
    [Sales Amount],
    DATEADD ( 'Date'[Date], -1, MONTH )
)

Sales Month Change =
[Sales Amount] - [Sales Previous Month]

Sales Month Change % =
DIVIDE ( [Sales Month Change], [Sales Previous Month] )

3 Handle slicers and incomplete months

The awkward part is deciding what to do with partial months. If the current month only has ten days loaded, should the previous month also be cut to ten days, or should it show the full prior month? The DAX pattern depends on that answer.

For operational reporting, compare like-for-like days when the month is still open. For board packs and monthly finance reporting, lock the report to closed months so every user sees the same comparison.

  1. Add a closed-month flag in the date table or data model.
  2. Use the flag in published monthly reporting views.
  3. Test the visual with no slicer, one month selected and multiple months selected.
  4. Check the measure against an exported ERP total before publishing.

Common mistakes to avoid

Using the fact table date directly

This often works in one visual and fails in another because the date range is not continuous and missing transaction days disappear from the model.

Comparing partial and complete months

A current open month compared with a complete prior month can create a false performance drop. Define the reporting rule first.

Formatting before validating

Conditional colours and arrows make errors look authoritative. Validate the raw current, previous and variance measures first.

Validation checklist

Need the report to reconcile with ERP?

Digital Adaption helps UK SMEs rebuild trusted Power BI, ERP and operational reporting after migrations, ownership gaps and model drift.

Review reporting trust

FAQ

DATEADD is more flexible for shifted periods in the current filter context. PREVIOUSMONTH is simpler but can surprise users when the selection includes multiple dates or partial periods.

The usual causes are an unmarked date table, broken relationship, missing prior-period dates or a slicer that filters the prior month out of the visual context.

Start with a 30-minute data risk call
Start with a 30-minute data risk call

Find out why the numbers do not match before the project gets expensive.

Book a 30-minute data risk call Review the first engagement