The Averaged Lie
The hourly job ran at nine. By ten, a campaign had brought in a different set of buyers.
Hourly job computes the typical basket.
Where this shows up
Why the warehouse gets it wrong
Averages and totals get computed in batches because, for a long time, computing them on every request cost too much. So the limit engine reads a number about a window that already closed, and nothing on the number says how old it is.
By the time the decision ran, its context was outdated. We call that a context gap.
Compute the average when the cap needs it.
In Tacnode, the typical basket, velocity and rolling spend are derived from current data, and you choose per number how fresh it has to be. The ones a cap depends on can be computed at the moment the cap is set. Ones that can lag a little sit in a view you refresh on your own schedule.
If an engineer asks how
Sums, counts and windows resolve at query time against hybrid row and column storage. Heavier ones become incrementally refreshed views on a schedule set in SQL.
Questions to put to your team
- How old is the window your limits are computed on?
- Which of those numbers can afford to be an hour old?
- What did your limits do during the last big campaign?
Is your limit engine telling this lie?
Bring it to a demo, and we’ll trace what it reads and how old that data is by the time it runs.
Book a demo →