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.
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 pagePrevious-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 answerCreate 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.
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.
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] )
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.
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.
A current open month compared with a complete prior month can create a false performance drop. Define the reporting rule first.
Conditional colours and arrows make errors look authoritative. Validate the raw current, previous and variance measures first.
Digital Adaption helps UK SMEs rebuild trusted Power BI, ERP and operational reporting after migrations, ownership gaps and model drift.
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