Data profiles
A data profile is the recipe that tells Temporis how to read a data source: which series, at what cadence, how much history, and how to clean it. It is the thing you forecast against.
What a profile defines
A data source holds raw rows. A profile turns those rows into a clean, regularly spaced signal the model can read — picking the series, snapping observations onto a time grid, deciding how much history to use, and tidying gaps. When you call predict, you name a profile, not a source.
You create and edit profiles in the dashboard. The example here is hourly_orders: it reads the orders series from store_metrics on a one-hour grid (interval 3600).
Selecting the data
Source and series
Two settings choose what the profile reads:
data_source— which data source to read from.names— one or more series names within that source.
Listing a single name gives a univariate forecast. Listing several — say orders and visitors — makes the profile multivariate: the series are forecast jointly, so the model can use the relationship between them.
The time grid
Real observations rarely arrive on a perfectly even cadence, so a profile resamples them onto a regular grid.
interval is the size of each grid bucket in seconds. With interval 3600, observations are snapped into hourly buckets. The grid is anchored on your most recent observation and steps backward from there, so the latest data always lands cleanly on the grid.
The model does not read every point one at a time. It works in patches — fixed-size chunks of the series:
patch_len— how many points make up one patch.patch_spacing— the stride between the points it uses, a form of downsampling.num_patches— the most patches of history it will use as context.min_patches— the fewest patches of history required to serve a prediction.
Intuitively: the context the model sees is roughly num_patches patches of recent history. If a profile has fewer than min_patches patches available, it cannot serve and you get HTTP 409 "Not enough data for this data profile."
Spacing also sets your forecast resolution. The effective step between forecast points is interval × patch_spacing seconds. With interval 3600 and patch_spacing 1, predictions land one hour apart.
Cleaning the series
After resampling, some buckets may have no observation. Two settings decide how that is handled:
fill_limit— the longest run of consecutive empty buckets that will be forward-filled (carrying the last known value forward). A gap longer than this is treated as genuinely missing and those rows are dropped instead.exclude_window— a recurring time-of-day window to mask out, given as a timezone plus a start and stop. Use it for dead time you expect, like overnight hours when a market is closed, so that quiet stretch does not distort the series.
Levels vs. growth
Some series are best modeled by their level; others by their relative change. The use_diffs setting (the log-diff transform) switches the model to work on log growth — proportional change from one step to the next — instead of the raw value.
Turn it on for series that move multiplicatively or trend strongly over a wide range: revenue, prices, anything where a 10% move matters more than an absolute one. Leave it off for series that sit in a bounded, roughly stationary range, where the raw level is already the natural thing to predict.
Readiness
A profile is not usable the instant you create it. Temporis first computes normalization statistics — learning the typical spread of your data so it can scale values into the range the model expects. Until it has enough data to do that, the profile is not ready, and the dashboard shows its readiness state.
Predicting against a profile that is not ready returns HTTP 404 "Data profile is not ready to serve." Wait until the dashboard reports the profile as ready, then call predict.
Settings reference
| Setting | What it controls | Example |
|---|---|---|
data_source | Which data source the profile reads. | store_metrics |
names | Series to read; several names forecast jointly (multivariate). | ["orders"] |
interval | Resampling bucket in seconds; grid anchored on the most recent observation. | 3600 |
patch_len | Number of points in one patch — the chunk the model reads and writes at a time. | 16 |
patch_spacing | Stride between points used; forecast step is interval × patch_spacing seconds. | 1 |
num_patches | Maximum patches of history used as context. | 32 |
min_patches | Minimum patches required to serve; below this, 409 "Not enough data". | 4 |
fill_limit | Longest run of empty buckets to forward-fill; longer gaps drop rows. | 2 |
use_diffs | Model relative change (log growth) instead of raw level. | true |
exclude_window | Recurring time-of-day window to mask (timezone + start + stop). | America/New_York 20:00–08:00 |
Not sure what values to choose? Tuning a profile walks through picking interval, history length, and the cleaning settings for your data.