Skip to content

Not Future Anomaly Reporting

How the Not Future check reports violations: the anomaly messages it produces, what the numbers mean, how the offending value appears in Source Records, and how to replace the default message with a value from your own data.

Anomaly Messages

On a Date or Timestamp field at 100% coverage, Not Future reports violating rows as Record Anomalies. Below 100% coverage, a failed coverage assertion produces one Shape Anomaly for the dataset. On an array field the rule is evaluated element-wise as a field-level check, which always reports a Shape Anomaly. The two templates are:

Record Anomaly

The field '<field_name>' has value <value>, which is a future date/time

Shape Anomaly

For the field '<field_name>', X.XXX% of N records (K) contain future dates/times

When a filter is set, both Record and Shape Anomaly messages end with [filter: <expression>].

Scan settings can group a large number of Record Anomalies into one rolled-up Shape Anomaly. This behavior applies across rule types and is documented under Maximum Record Anomalies per Check.

What the Numbers Mean

  • X.XXX%: the fraction of filtered rows holding a date ahead of the present moment.
  • N: the total number of rows the check evaluated (after the filter, if any). Rows with NULL values count in this total because they pass.
  • K: the number of rows with a future date.

Source Records Behavior

The offending cell is highlighted with an orange outline and an orange-tinted background in the Source Records view. Compare it against the Scan's run time, which is the boundary the value was measured against, rather than against the time you are reading the anomaly.

Custom Anomaly Description

Not Future supports Custom Anomaly Description because it emits Record Anomalies. When anomaly_message_field (or the Custom Anomaly Description toggle in the UI) is set to another column on the same row, the Record Anomaly message becomes the value of that column for the violating row. When the referenced column is null, missing, or empty, the standard template is used instead.

Because the option only applies to Record Anomalies, it does not affect Shape Anomalies, which always use the fixed template.

See Also