Month-over-month change compares each month with the one before: +20% in February, −25% in March. QuickSight’s period-over-period functions do it by date, not by row position, so a month with no data does not shift the comparison onto the wrong month.
Copy and paste
Previous month’s value:
periodOverPeriodLastValue(sum({Sales}), {Order Date}, MONTH, 1)
Change in value:
periodOverPeriodDifference(sum({Sales}), {Order Date}, MONTH, 1)
Change in percent, as an explicit ratio:
periodOverPeriodDifference(sum({Sales}), {Order Date}, MONTH, 1)
/ periodOverPeriodLastValue(sum({Sales}), {Order Date}, MONTH, 1)
The built-in percent function:
periodOverPeriodPercentDifference(sum({Sales}), {Order Date}, MONTH, 1)
Same month last year, in a monthly visual:
periodOverPeriodPercentDifference(sum({Sales}), {Order Date}, YEAR, 1)
Put {Order Date} in the visual with the Month aggregation.
Example
| Month | Sales | Previous month | Change | Change % |
|---|---|---|---|---|
| Jan 2026 | 100 | |||
| Feb 2026 | 120 | 100 | 20 | 20.0% |
| Mar 2026 | 90 | 120 | −30 | −25.0% |
| Apr 2026 | 110 | 90 | 20 | 22.2% |
| May 2026 | 130 | 110 | 20 | 18.2% |
| Jun 2026 | 100 | 130 | −30 | −23.1% |
January is empty: there is no December in the data to compare with.
Period and offset
The third and fourth arguments are optional, but they go together: give both or neither.
- With
MONTH, 1the comparison is always with the previous month, whatever the visual shows. - Without them, the comparison follows the date granularity of the visual: month over month when the visual shows months, quarter over quarter when the reader switches to quarters.
YEAR, 1in a monthly visual compares each month with the same month a year earlier.
Missing months
The AWS blog post that introduced these functions stresses that they compare dates, not rows. Remove April
from the example: May is then compared with April, finds nothing, and stays empty. A row-based function,
such as lag or percentDifference, would compare May with March and report +44.4% as a monthly
change. When the visual’s rows are dates, prefer the period-over-period functions; see
how to get the previous row’s value for the
row-based ones.
Formatting the percentage
The explicit ratio returns 0.2 for +20%, which the Percent format displays correctly. Look at the
raw value of periodOverPeriodPercentDifference in a table before you choose its format, so that a value
already expressed in percent does not end up multiplied by 100 again.
Filters
These are table calculations: they see only the rows that survive the filters. A visual filtered to 2026 has no December 2025 to compare January with, and a year-over-year comparison needs the previous year in the visual’s data. Filter with a date range wide enough for the comparison, or hide the extra months with a filter on a table calculation.
Checked against the Amazon Quick Sight function reference (October 2026). The example results were recomputed in DuckDB.