> ## Documentation Index
> Fetch the complete documentation index at: https://docs.open-metadata.org/llms.txt
> Use this file to discover all available pages before exploring further.

# Column Tests - UI Config | OpenMetadata Quality Config Guide

> Configure column-level data quality tests in the OpenMetadata UI — uniqueness, nullness, regex, ranges, and more.

# Column Tests - UI Config

Tests applied on top of Column metrics. For table-level tests, see the [Tests UI Overview](/v2.0.x-SNAPSHOT/how-to-guides/data-quality-observability/quality/tests-ui).

Here is the list of all column tests:

* [Column Values to Be Unique](#column-values-to-be-unique)
* [Column Values to Be Not Null](#column-values-to-be-not-null)
* [Column Values to Match Regex](#column-values-to-match-regex)
* [Column Values to not Match Regex](#column-values-to-not-match-regex)
* [Column Values to Be in Set](#column-values-to-be-in-set)
* [Column Values to Be Not In Set](#column-values-to-be-not-in-set)
* [Column Values to Be Between](#column-values-to-be-between)
* [Column Values Missing Count to Be Equal](#column-values-missing-count-to-be-equal)
* [Column Values Lengths to Be Between](#column-values-lengths-to-be-between)
* [Column Value Max to Be Between](#column-value-max-to-be-between)
* [Column Value Min to Be Between](#column-value-min-to-be-between)
* [Column Value Mean to Be Between](#column-value-mean-to-be-between)
* [Column Value Median to Be Between](#column-value-median-to-be-between)
* [Column Values Sum to Be Between](#column-values-sum-to-be-between)
* [Column Values Standard Deviation to Be Between](#column-values-standard-deviation-to-be-between)
* [Column Values To Be At Expected Location](#column-values-to-be-at-expected-location)

### Column Values to Be Unique

Ensures each value in a column appears only once.

#### Dimension

`Uniqueness`

#### When to Use

* Primary keys or natural identifiers
* Fields like email, username, or ID

#### Behavior

| Condition                 | Status |
| ------------------------- | ------ |
| All values are unique     | ✅      |
| Any duplicate value found | ❌      |

<video autoPlay muted loop playsInline className="w-full aspect-video rounded-xl" src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/unique.mp4?fit=max&auto=format&n=AdlqT7tGpGl0YynA&q=85&s=deb58a6d89a6d37d991de07d0d75f54f" data-path="public/images/how-to-guides/quality/column-test/unique.mp4" />

### Column Values to Be Not Null

Ensures there are no NULL entries in the column.

#### Dimension

`Completeness`

#### When to Use

* Mandatory fields such as `email`, `amount`, `created_at`
* Required keys or business-critical columns

#### Behavior

| Condition              | Status |
| ---------------------- | ------ |
| No NULLs present       | ✅      |
| Any NULL value present | ❌      |

<video autoPlay muted loop playsInline className="w-full aspect-video rounded-xl" src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/not-null.mp4?fit=max&auto=format&n=AdlqT7tGpGl0YynA&q=85&s=da043fa3f19b5018210ec6046b44c5e8" data-path="public/images/how-to-guides/quality/column-test/not-null.mp4" />

### Column Values to Match Regex

This test validates that values in a column match a configured regular expression. OpenMetadata uses database regex support where available. For dialects where SQL regex is not supported, the validator falls back to SQL `LIKE` semantics.

Ensures all values match a specified regular expression pattern.

#### Dimension

`Validity`

#### When to Use

* Emails, zip codes, IDs, structured formats

#### Behavior

| Condition                | Status |
| ------------------------ | ------ |
| All values match regex   | ✅      |
| Any value does not match | ❌      |

<video autoPlay muted loop playsInline className="w-full aspect-video rounded-xl" src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/match-regex.mp4?fit=max&auto=format&n=AdlqT7tGpGl0YynA&q=85&s=6fb318330280012c23c634b444a3a5aa" data-path="public/images/how-to-guides/quality/column-test/match-regex.mp4" />

### Column Values to not Match Regex

This test validates that values in a column do not match a configured forbidden regular expression. If the test finds values matching the `forbiddenRegex`, the test will fail. OpenMetadata uses database regex support where available. For dialects where SQL regex is not supported, the validator falls back to SQL `NOT LIKE` semantics.

Ensures values do **not** match a restricted regex pattern.

#### Dimension

`Validity`

#### When to Use

* Prevent forbidden values, test strings, or patterns

#### Behavior

| Condition                          | Status |
| ---------------------------------- | ------ |
| No value matches forbidden pattern | ✅      |
| Any value matches the pattern      | ❌      |

<video autoPlay muted loop playsInline className="w-full aspect-video rounded-xl" src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/not-match-regex.mp4?fit=max&auto=format&n=AdlqT7tGpGl0YynA&q=85&s=c1d5e41c48c836fcbb24ad11052682a3" data-path="public/images/how-to-guides/quality/column-test/not-match-regex.mp4" />

### Column Values to Be in Set

Ensures values are within a predefined whitelist.

#### Dimension

`Validity`

#### When to Use

* Enum values: `status`, `currency`, `country_code`

#### Behavior

| Condition                                          | Status |
| -------------------------------------------------- | ------ |
| All values in set (if `matchEnum = true`)          | ✅      |
| Any value not in set (if `matchEnum = true`)       | ❌      |
| Any value from set exists (if `matchEnum = false`) | ✅      |
| No values from set found (if `matchEnum = false`)  | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/column-values-in-set.gif?s=d68f6d697a8dd52e3168309a3935e516" alt="Column Values In Set" width="1502" height="720" data-path="public/images/how-to-guides/quality/column-test/column-values-in-set.gif" />

### Column Values to Be Not In Set

Ensures values are **not** in a specified blacklist.

#### Dimension

`Validity`

#### When to Use

* Block invalid values like `"NA"`, `"Unknown"`, `-1`

#### Behavior

| Condition                          | Status |
| ---------------------------------- | ------ |
| No values from forbidden set       | ✅      |
| Any value from forbidden set found | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/column-values-not-in-set.gif?s=9dfdc6a07d9b10ee81243617722ffc0a" alt="Column Values Not In Set" width="1502" height="720" data-path="public/images/how-to-guides/quality/column-test/column-values-not-in-set.gif" />

### Column Values to Be Between

Validates that values in a column are within a configured minimum and maximum range.

#### Dimension

`Accuracy`

#### When to Use

* Numeric thresholds such as age, price, score, or percentage
* Date or timestamp ranges when supported by the connector

#### Behavior

| Condition                 | Status |
| ------------------------- | ------ |
| Value within `[min, max]` | ✅      |
| Value \< min or > max     | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/to-be-between.gif?s=cbb1871b53dae4eaaf8e65c189c3bf71" alt="To Be Between" width="1502" height="720" data-path="public/images/how-to-guides/quality/column-test/to-be-between.gif" />

### Column Values Missing Count to Be Equal

Ensures total missing values (NULL + defined "missing" strings) match a target count.

#### Dimension

`Completeness`

#### When to Use

* Auditing known missing values
* Accounting for `"NA"`, `"N/A"`, `"null"`

#### Behavior

| Condition                      | Status |
| ------------------------------ | ------ |
| Missing count = expected value | ✅      |
| Missing count ≠ expected value | ❌      |

<video autoPlay muted loop playsInline className="w-full aspect-video rounded-xl" src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/missing-count.mp4?fit=max&auto=format&n=AdlqT7tGpGl0YynA&q=85&s=351abdad9f3ec9b6bde8ed3a4c4cffc4" data-path="public/images/how-to-guides/quality/column-test/missing-count.mp4" />

### Column Values Lengths to Be Between

Ensures that the length of each string value in the column is within a defined character range.

#### Dimension

`Accuracy`

#### When to Use

* To validate field length constraints like `name`, `address`, or `description`
* To catch too-short or too-long values that may break UI or downstream logic

#### Behavior

| Condition                                  | Status |
| ------------------------------------------ | ------ |
| All values have length within `[min, max]` | ✅      |
| Any value length \< min or > max           | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/lengths-to-be-between.gif?s=39e9fbd0e14a87a20a209d06c7757890" alt="Lengths To Be Between" width="800" height="383" data-path="public/images/how-to-guides/quality/column-test/lengths-to-be-between.gif" />

### Column Value Max to Be Between

Validates the **maximum** value of a column lies within a range.

#### Dimension

`Accuracy`

#### When to Use

* Cap validation for `score`, `amount`, `age`

#### Behavior

| Condition                       | Status |
| ------------------------------- | ------ |
| Max value in range `[min, max]` | ✅      |
| Max \< min or Max > max         | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/max.gif?s=d591c11d21b9b3dc459b172e6c1c68b6" alt="Max" width="2850" height="1366" data-path="public/images/how-to-guides/quality/column-test/max.gif" />

### Column Value Min to Be Between

Validates the **minimum** value of a column lies within a range.

#### Dimension

`Accuracy`

#### When to Use

* Threshold validation for `discount`, `price`, etc.

#### Behavior

| Condition                       | Status |
| ------------------------------- | ------ |
| Min value in range `[min, max]` | ✅      |
| Min \< min or Min > max         | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/min.gif?s=3b9f2bf5b82948a61ad806f7fb17c8dc" alt="Min" width="2850" height="1366" data-path="public/images/how-to-guides/quality/column-test/min.gif" />

### Column Value Mean to Be Between

Validates that the **mean (average)** value is in the expected range.

#### Dimension

`Accuracy`

#### When to Use

* Check dataset drift or pipeline behavior

#### Behavior

| Condition                  | Status |
| -------------------------- | ------ |
| Mean value in `[min, max]` | ✅      |
| Mean \< min or Mean > max  | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/mean.gif?s=41e69cae256378e5ff98eb9cfc273b72" alt="Mean" width="800" height="383" data-path="public/images/how-to-guides/quality/column-test/mean.gif" />

### Column Value Median to Be Between

Validates the **median** value is in the expected range.

#### Dimension

`Accuracy`

#### When to Use

* Median income, score, latency checks

#### Behavior

| Condition                     | Status |
| ----------------------------- | ------ |
| Median in range `[min, max]`  | ✅      |
| Median \< min or Median > max | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/median.gif?s=5759a943446b45d27df06300f214b2de" alt="Median" width="2850" height="1366" data-path="public/images/how-to-guides/quality/column-test/median.gif" />

### Column Values Sum to Be Between

Validates the total **sum** of values in a column is within a defined range.

#### Dimension

`Accuracy`

#### When to Use

* Revenue, units sold, total scores, etc.

#### Behavior

| Condition                 | Status |
| ------------------------- | ------ |
| Sum in range `[min, max]` | ✅      |
| Sum \< min or Sum > max   | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/sum.gif?s=3f2294139ae86d516955aca02bc414f6" alt="Sum" width="1502" height="720" data-path="public/images/how-to-guides/quality/column-test/sum.gif" />

### Column Values Standard Deviation to Be Between

Validates the **standard deviation** (spread) of values is acceptable.

#### Dimension

`Accuracy`

#### When to Use

* Monitoring variance in numeric datasets

#### Behavior

| Condition               | Status |
| ----------------------- | ------ |
| Std Dev in `[min, max]` | ✅      |
| Std Dev \< min or > max | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/standard-deviation.gif?s=c3a324a638a9c1e248362872d0122cd8" alt="Standard Deviation" width="1502" height="720" data-path="public/images/how-to-guides/quality/column-test/standard-deviation.gif" />

### Column Values To Be At Expected Location

Validates latitude/longitude values are within a defined area.

#### Dimension

`Accuracy`

#### When to Use

* Verifying address coordinates
* Mapping regional data

#### Behavior

| Condition                                      | Status |
| ---------------------------------------------- | ------ |
| Coordinates within buffer of expected location | ✅      |
| Any record outside allowed radius              | ❌      |

<img src="https://mintcdn.com/openmetadata/AdlqT7tGpGl0YynA/public/images/how-to-guides/quality/column-test/expected-location.gif?s=b55e6ad6a495ee77ab5e4f829878f7da" alt="Expected Location" width="1502" height="720" data-path="public/images/how-to-guides/quality/column-test/expected-location.gif" />
