Skip to content

Freshness Troubleshooting

Common problems when creating and running a Freshness check, their causes, and how to resolve them.

Validation Fails When Creating the Check

Clicking Validate returns an error instead of a success message.

Cause: The configuration is incomplete. The most common reason is a missing Maximum Age value or unit.

Resolution:

  1. Review the error message: it explains what needs attention.
  2. Pick a Unit and enter a Maximum Age.

Validation checks the configuration without reading the container, so a successful validation does not confirm that the container can report its last modification time. The first Scan does.

The Data Went Stale but No Anomaly Was Created

The Observability chart shows data older than the Maximum Age, but the Anomalies list has nothing for the check.

Cause: No Scan evaluated the check while the data was stale. Observability measurements update the chart, but only a Scan asserts a Freshness check and creates anomalies. A Scan that does not include the Metadata category skips the check as well.

Resolution: Schedule a Scan on the container with the Metadata category selected, often enough to catch staleness in time. See Select Check Categories and Schedule Options.

The Check Is Never Asserted

Every Scan records the check as Not Asserted, with a message that the container could not provide a freshness reading.

Cause: The container has no source for its last modification time. This happens on views, computed tables, computed joins, and tables outside Snowflake, BigQuery, and Databricks when no Last Modified incremental field is set, and on partitioned Parquet, ORC, or Avro folders.

Resolution:

  1. For a database container, open its settings and set an Incremental Strategy of Last Modified on a date or timestamp field your pipeline updates on every load.
  2. For a partitioned Parquet, ORC, or Avro folder, monitor it with a Volumetric check instead.

See Where the Last Modification Time Comes From.

The Check Passes While the Pipeline Is Broken

The data is clearly outdated, but every Scan passes.

Cause: Something keeps moving the last modification time. On Snowflake, BigQuery, and Databricks tables, any change to the table counts, including a job that rewrites the same rows or alters the table. On a container measured by its incremental field, a process that keeps stamping the field with the current time does the same.

Resolution: Measure freshness on the timestamp that reflects new business data. For a view or computed container, use that field as the incremental field. Pair the check with a Volumetric check to catch loads that touch the table without adding rows.

The Check Fails Every Day for a Few Minutes

Anomalies appear on most days and the data is only slightly late.

Cause: The Maximum Age is about the same as the normal interval between updates, so any small delay crosses it.

Resolution: Set the Maximum Age to the update interval plus the lateness you are willing to accept, or schedule the Scan further from the expected update. See Best Practices.

Saving or Activating Fails Because Another Check Conflicts

Clicking Save, Update, or Activate returns an error saying an existing check conflicts.

Cause: The container already has an Active Freshness check. Only one is allowed per container, whatever its Maximum Age, and AI Managed checks count.

Resolution: Open the check the message names and edit its Maximum Age instead of creating a second one. See One Active Check per Container.

An AI Managed Check Stopped Adjusting

The Maximum Age of a check that used to follow the data no longer changes.

Cause: Someone changed its Maximum Age, which converted it to Authored. Authored checks keep the value set on them.

Resolution: Keep the Authored check if its Maximum Age is intentional. Otherwise, archive it so it stops raising anomalies. See AI Managed Freshness Checks.