Kater SQL Functions Calendar comparisons
KATER__PREVIOUS_PERIOD
The measure for the period before each row's period, such as the month before each month.
Family: Calendar comparisons
Syntax
KATER__PREVIOUS_PERIOD(measure [, by => date] [, coverage => 'matching_elapsed' | 'full_period'])Arguments
Required
| Argument | Description |
|---|---|
measure | The measure to compare, written bare, without EVAL. |
Optional
| Argument | Description |
|---|---|
by | The date axis to compare along, such as KATER__MONTH(orders.order_date). Left out, it is the one date in GROUP BY. An expression. |
coverage | What the earlier period covers when the query filters the date axis. 'matching_elapsed' takes the same dates, moved back. 'full_period' takes whole periods. One of 'matching_elapsed', 'full_period'. It is 'matching_elapsed' when left out. |
Returns
A number. The field menu writes the @format of the field it reads beside it, or @format number(2) where that field has none and can have decimals.
Usage notes
- It works the measure out again over the source rows of the earlier period. It does not read an earlier row of the result, so a period with no row still has a value.
- The axis is a date at a grain of day, week, month, quarter or year. Left out, by is the one date in GROUP BY. With two, or none, name one with by.
- Without a date filter, a month that is not over yet compares with the whole month before it.
- A date filter on the axis needs fixed dates at both ends. A moving end, such as
CURRENT_DATE, is refused. - For the change, subtract the call from
EVAL(measure). For the percent change, giveEVAL(measure)and the call toKATER__PERCENT_CHANGE. - In a query, declare it with
CUSTOM_CALCULATION. As aMEASURE, it needsby.
Example
This Sandbox query reads the sample shop’s orders. The table shows the rows that Kater gave.
SELECT KATER__MONTH(orders.order_date) AS "Order Month", EVAL(orders.sum__quantity) AS "Units", CUSTOM_CALCULATION( 'previous_period__sum__quantity', KATER__PREVIOUS_PERIOD(orders.sum__quantity, by => KATER__MONTH(orders.order_date)) ) AS "Units Month Before"FROM kater_dataset.orders AS ordersWHERE KATER__IS_BETWEEN(orders.order_date, DATE '2026-05-01', DATE '2026-09-30')GROUP BY KATER__MONTH(orders.order_date)ORDER BY 1| Order Month | Units | Units Month Before |
|---|---|---|
| 2026-05-01 | 441 | 374 |
| 2026-06-01 | 403 | 441 |
| 2026-07-01 | 438 | 403 |
| 2026-08-01 | 454 | 438 |
| 2026-09-01 | 442 | 454 |