Skip to content

Between Check FAQ

Answers to common questions about how the Between check evaluates a numeric range, how inclusivity works on each side, and how anomalies are reported, grouped by topic.

Behavior

Are the boundaries inclusive or exclusive?

Each side is configured independently with its own Inclusive toggle, so one check can express min <= value <= max, min < value < max, or either half-open form. The anomaly message shows the boundary values but not their inclusivity, so check the configuration when a value sitting exactly on a boundary is reported.

How are NULL values treated?

NULLs pass. A row with NULL in the evaluated field is not counted as a violation. Between only asserts that present values fall inside the range. If the field must also be populated, pair the check with a Not Null check on the same field.

Which field types can I check?

Numeric fields: integers and decimals. Arrays of numbers are also accepted, and the check evaluates every element of the array. A number stored as text does not appear in the field picker; expose it with a numeric type first.

What happens on an array field?

Every element is tested against the range, and the row fails as soon as one element falls outside it. Empty arrays and NULL arrays pass, since there is nothing to evaluate. Element-wise evaluation runs as a field-level check, so the result is a Shape Anomaly for the field rather than per-row Record Anomalies, whatever the coverage is set to.

Does the filter run before or after the comparison?

Before. The platform applies the filter first and then evaluates the comparison only on the rows that pass the filter. Filtered-out rows cannot trigger an anomaly and are not counted in the totals.


Anomaly Reporting

What do the anomaly messages look like?

Record Anomaly: The field '<field>' has value <row_value>, which is not between <min> and <max>

Shape Anomaly: For the field '<field>', X.XXX% of N records (K) are not between <min> and <max>

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

Does Between produce Record Anomalies, Shape Anomalies, or both?

At 100% coverage (the default), violating rows are reported as Record Anomalies. Below 100% coverage, a failed coverage assertion produces one Shape Anomaly for the dataset. A scan can also roll up a large number of Record Anomalies into one Shape Anomaly.

Does Custom Anomaly Description work for Between?

Yes. Between emits Record Anomalies, so the anomaly_message_field payload field (and the Custom Anomaly Description toggle in the UI) replaces the Record Anomaly message with the value of the named column on the violating row. When that column is null, missing, or empty for a violating row, the standard Record template is used instead. The Shape Anomaly always uses the fixed template.


Configuration

Can I lower the coverage on a Between check?

Yes. Coverage at 1.0 (100%) means every row must pass. Lowering coverage to 0.995 allows up to 0.5% of rows to fail without raising an anomaly; once the failing fraction goes past that, the check reports a Shape Anomaly. Use lower coverage with care: a real regression that happens to fall just under the threshold will not raise an alert at all.

Can I change the boundaries on an existing check?

Yes. In the UI, open the check, change Min, Max, or either Inclusive toggle, and click Update; see Edit a Check for the full steps. Through the API, a PUT to /api/quality-checks/{id} updates the whole properties object. The rule type, the target container, and the associated Check Template stay immutable; see the API page for the editable/immutable matrix.

What permission do I need to create or edit a Between check?

The Drafter team permission on the datastore covers Draft work (creating a check as Draft or editing it while it stays Draft). Anything that puts the check into evaluation, such as creating or editing an Active check, archiving, or deleting, requires the Author team permission (or above). Viewing only requires Reporter. See Permissions for the full matrix.

I only need a floor (or only a ceiling). Should I still use Between?

No. Between always evaluates both sides, so a single-sided rule forces you to invent a second boundary that can start firing when the data legitimately grows. Use Min Value or Max Value instead, or Positive and Not Negative for the two most common floors.

How is Between different from Between Times?

Between works on numeric fields. Between Times applies the same idea to Date and Timestamp fields, with a start and an end instant instead of a minimum and a maximum number.