Freshness Check Examples¶
Three real-world scenarios that show how the Freshness check behaves in production: an extract that stops arriving, a daily load that runs late, and a view whose freshness comes from a timestamp field. Freshness is a Shape-only rule, so every failure is reported as a single Shape Anomaly for the container.
The situation: A CRM extract replaces customers_snapshot every four hours on Snowflake. A permissions change on the source makes the extract fail without an error on the warehouse side. The table keeps its old rows, so nothing looks wrong until a report shows stale customer data. The team allows two extra hours for late runs.
Check configuration
| Field | Value |
|---|---|
| Rule | Freshness |
| Table / File | customers_snapshot |
| Maximum Age | 6 Hours |
| Owner | (check creator) |
| Anomaly Assignee | (CRM integration owner) |
| Description | customers_snapshot is refreshed at least every 6 hours. |
| Tags | crm, sla |
| Status | Active |
Payload
{
"description": "customers_snapshot is refreshed at least every 6 hours.",
"rule": "freshness",
"fields": [],
"container_id": 311,
"filter": null,
"properties": {"value": 21600000},
"tags": ["crm", "sla"],
"additional_metadata": {},
"template_id": null,
"status": "Active",
"owner_id": 7,
"default_anomaly_assignee_id": 18
}
A Scan with the Metadata category runs every hour, so the alert arrives within an hour of the table going stale.
Sample Data
| Scan (UTC) | Last modified (UTC) | Age |
|---|---|---|
| Tue 10:00 | Tue 08:05 | 1 h 55 min |
| Tue 13:00 | Tue 12:04 | 56 min |
| Tue 18:00 | Tue 12:04 | 5 h 56 min |
| Tue 19:00 | Tue 12:04 | 6 h 56 min |
What gets flagged
The 16:00 extract never lands. At 18:00 the table is still within its 6 hours, so the check passes. At 19:00 its last change is almost seven hours old, and the Scan reports a Shape Anomaly. Every hourly Scan after that reports the age again, until the next extract lands.
Shape Anomaly
customers_snapshot was last updated 6 hours, 56 minutes and 12 seconds ago, longer than the permitted 6 hours
Flowchart
graph TD
A["Scan reads when customers_snapshot last changed"] --> B["Age = Scan time - last modification"]
B --> C{"Age within<br/>6 hours?"}
C -->|Yes| D["Check passes"]
C -->|No| E["Report a Shape Anomaly"]
Equivalent SQL
The situation: daily_revenue on PostgreSQL is rebuilt once a night, normally by 02:00 UTC, and the finance dashboard refreshes at 07:00. The team wants an alert before the dashboard refreshes if the load has not run. Its incremental field is loaded_at, with the Last Modified Incremental Strategy.
Check configuration
| Field | Value |
|---|---|
| Rule | Freshness |
| Table / File | daily_revenue |
| Maximum Age | 1 Days |
| Owner | (check creator) |
| Description | daily_revenue is rebuilt at least once a day. |
| Tags | finance |
| Status | Active |
Payload
{
"description": "daily_revenue is rebuilt at least once a day.",
"rule": "freshness",
"fields": [],
"container_id": 402,
"filter": null,
"properties": {"value": 86400000},
"tags": ["finance"],
"additional_metadata": {},
"template_id": null,
"status": "Active",
"owner_id": 7,
"default_anomaly_assignee_id": null
}
A Scan with the Metadata category runs every day at 06:00 UTC, an hour before the dashboard refreshes.
Sample Data
| Scan (UTC) | Latest loaded_at (UTC) |
Age |
|---|---|---|
| Mon 06:00 | Mon 01:47 | 4 h 13 min |
| Tue 06:00 | Mon 01:47 | 1 day, 4 h 13 min |
| Wed 06:00 | Wed 01:52 | 4 h 8 min |
What gets flagged
Monday night's rebuild is delayed past the morning. On Tuesday at 06:00 the newest loaded_at is still Monday's, more than a day old, so the Scan reports a Shape Anomaly an hour before the dashboard would have shown stale numbers. On Wednesday the rebuild runs on time and the check passes again.
Shape Anomaly
daily_revenue was last updated 1 day, 4 hours and 13 minutes ago, longer than the permitted 1 day
Scanning about four hours after the usual load keeps a normal day well under 1 day and puts a missed day well over it, so small delays in either the load or the Scan do not flip the result.
Flowchart
graph TD
A["Scan reads the latest loaded_at"] --> B["Age = Scan time - latest loaded_at"]
B --> C{"Age within<br/>1 day?"}
C -->|Yes| D["Check passes"]
C -->|No| E["Report a Shape Anomaly"]
Equivalent SQL
The situation: v_open_orders is a view over the order system. Views have no platform record of their last change, so the team sets updated_at as the view's incremental field with the Last Modified Incremental Strategy. Orders change all day, so the view should never go two hours without a newer updated_at.
Check configuration
| Field | Value |
|---|---|
| Rule | Freshness |
| Table / File | v_open_orders |
| Maximum Age | 2 Hours |
| Owner | (check creator) |
| Description | v_open_orders shows an order change at least every 2 hours. |
| Tags | orders |
| Status | Active |
Payload
{
"description": "v_open_orders shows an order change at least every 2 hours.",
"rule": "freshness",
"fields": [],
"container_id": 515,
"filter": null,
"properties": {"value": 7200000},
"tags": ["orders"],
"additional_metadata": {},
"template_id": null,
"status": "Active",
"owner_id": 7,
"default_anomaly_assignee_id": null
}
Sample Data (Scan at 15:30 UTC)
| order_id | status | updated_at (UTC) |
|---|---|---|
| 90412 | OPEN | 2026-03-11 11:02 |
| 90413 | OPEN | 2026-03-11 12:47 |
| 90415 | PENDING | 2026-03-11 13:18 |
What gets flagged
The newest updated_at is 13:18, so at 15:30 the view is 2 hours and 12 minutes old, past its 2 hours. The order service stopped writing after a deployment, and the Scan reports a Shape Anomaly. The highlighted value is the one the check reads: the latest updated_at, not any single row's problem.
Shape Anomaly
v_open_orders was last updated 2 hours and 12 minutes ago, longer than the permitted 2 hours
Without an incremental field, the same check is Not Asserted on every Scan, because a view cannot report when it last changed.
Flowchart
graph TD
A["Scan reads MAX(updated_at) of v_open_orders"] --> B["Age = Scan time - MAX(updated_at)"]
B --> C{"Age within<br/>2 hours?"}
C -->|Yes| D["Check passes"]
C -->|No| E["Report a Shape Anomaly"]
Equivalent SQL
See Also¶
-
Best Practices
Guidelines for scheduling the Scan, setting the Maximum Age, giving views an incremental field, and working with AI Managed checks.
-
Permissions
The team permission each action needs: view, create, edit, archive, restore, and delete.
-
How It Works
The complete reference: definition, when the check is evaluated, where the last modification time comes from, the Maximum Age, and AI Managed Freshness checks.
-
Anomaly Reporting
What the Shape Anomaly reports, how the age is measured, and why there is nothing to report per row.