> For the complete documentation index, see [llms.txt](https://docs.decube.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.decube.io/data-quality-v2/monitor-types/field-health/numerical-range.md).

# Numerical Range

This check looks at every individual value in a numeric column and confirms it falls within an expected range.

It only applies to numeric column types (integer, float, decimal, and similar).

### When to use it <a href="#when-to-use-it" id="when-to-use-it"></a>

A business expects every value in the `age` column of a `users` table to fall between 18 and 100. A daily range check flags any row outside this range — for example, a negative age or an unrealistic value like 999 — as a failing row.

### What's configurable <a href="#whats-configurable" id="whats-configurable"></a>

* **Schedule** — fixed recurring, or Manual (requires Full Table Scan if Manual).
* **Scan Method** — Full Table Scan (whole table each run) or Incremental Scan (only newly arrived rows, based on a timestamp column or filter expression).
* **Threshold** — a Numeric Range: a minimum and/or maximum. This defines what counts as a failing row — any row whose value falls outside this range. At least one bound is required; bounds are inclusive.
* **Tolerance** (optional) — how many, or what percentage of, failing rows are allowed before an incident is raised. If you don't set one, even a single failing row triggers an incident.

### Worked example — zero tolerance <a href="#worked-example-zero-tolerance" id="worked-example-zero-tolerance"></a>

<figure><img src="https://1779874722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTw0qpCVzfrIXqS4FEg4T%2Fuploads%2F80iNE0J3Kpm1IHFZgeeQ%2Fimage-20260812-014901.png?alt=media&amp;token=56e47672-58d3-4abe-9b86-7d0e0e51b174" alt=""><figcaption></figcaption></figure>

* Asset: `users` table, column `age`
* Scan Method: Full Table Scan
* Schedule: Daily
* Threshold: Numeric Range — min 18, max 65
* Tolerance: not set

**Resulting rules:**

* "A row fails when the value in age is below 18 or above 65."
* "An incident will be created when any row fails."

### Worked example — with tolerance <a href="#worked-example-with-tolerance" id="worked-example-with-tolerance"></a>

<figure><img src="https://1779874722-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FTw0qpCVzfrIXqS4FEg4T%2Fuploads%2Fxs22usFW0vopR82sjZPo%2Fimage-20260812-015258.png?alt=media&amp;token=69a16354-0262-40b8-8371-e3c1857b206a" alt=""><figcaption></figcaption></figure>

Same configuration as above, but with a tolerance of 5 failing rows allowed (Absolute tolerance, value 5).

**Resulting rule:** "An incident will be created when more than 5 rows fail."

### Notes <a href="#notes" id="notes"></a>

* Changing the schedule or scan method later is a destructive change (it creates a new monitor version). Adjusting only the threshold or tolerance value is not.
