Validate.col_vals_regex

Validate.col_vals_regex(
    columns,
    pattern,
    na_pass=False,
    pre=None,
    thresholds=None,
    actions=None,
    brief=None,
    active=True,
)

Validate whether column values match a regular expression pattern.

The col_vals_regex() validation method checks whether column values in a table correspond to a pattern= matching expression. This validation will operate over the number of test units that is equal to the number of rows in the table (determined after any pre= mutation has been applied).

Parameters

columns : str | list[str] | Column | ColumnSelector | ColumnSelectorNarwhals

A single column or a list of columns to validate. Can also use col() with column selectors to specify one or more columns. If multiple columns are supplied or resolved, there will be a separate validation step generated for each column.

pattern : str

A regular expression pattern to compare against.

na_pass : bool = False

Should any encountered None, NA, or Null values be considered as passing test units? By default, this is False. Set to True to pass test units with missing values.

pre : Callable | None = None

A optional preprocessing function or lambda to apply to the data table during interrogation.

thresholds : int | float | bool | tuple | dict | Thresholds = None

Optional failure threshold levels for the validation step(s), so that the interrogation can react accordingly when exceeding the set levels for different states (‘warning’, ‘error’, and ‘critical’). This can be created using the Thresholds class or more simply as (1) an integer or float denoting the absolute number or fraction of failing test units for the ‘warn’ level, (2) a tuple of 1-3 values, or (3) a dictionary of 1-3 entries.

actions : Actions | None = None

Optional actions to take when the validation step(s) meets or exceeds any set threshold levels. If provided, the Actions class should be used to define the actions.

brief : str | None = None

An optional brief description of the validation step. The templating elements "{col}" and "{step}" can be used to insert the column name and step number, respectively.

active : bool = True

A boolean value indicating whether the validation step should be active. Using False will make the validation step inactive (still reporting its presence and keeping indexes for the steps unchanged).

Returns

: Validate

The Validate object with the added validation step.

Examples

For the examples here, we’ll use a simple Polars DataFrame with two string columns (a and b). The table is shown below:

import pointblank as pb
import polars as pl

tbl = pl.DataFrame(
    {
        "a": ["rb-0343", "ra-0232", "ry-0954", "rc-1343"],
        "b": ["ra-0628", "ra-583", "rya-0826", "rb-0735"],
    }
)

pb.preview(tbl)
a
String
b
String
1 rb-0343 ra-0628
2 ra-0232 ra-583
3 ry-0954 rya-0826
4 rc-1343 rb-0735

Let’s validate that all of the values in column a match a particular regex pattern. We’ll determine if this validation had any failing test units (there are four test units, one for each row).

validation = (
    pb.Validate(data=tbl)
    .col_vals_regex(columns="a", pattern=r"r[a-z]-[0-9]{4}")
    .interrogate()
)

validation
STEP COLUMNS VALUES TBL EVAL UNITS PASS FAIL W E C EXT
#4CA64C 1
col_vals_regex
col_vals_regex()
a r[a-z]-[0-9]{4} 4 4
1.00
0
0.00

Printing the validation object shows the validation table in an HTML viewing environment. The validation table shows the single entry that corresponds to the validation step created by using col_vals_regex(). All test units passed, and there are no failing test units.

Now, let’s use the same regex for a validation on column b.

validation = (
    pb.Validate(data=tbl)
    .col_vals_regex(columns="b", pattern=r"r[a-z]-[0-9]{4}")
    .interrogate()
)

validation
STEP COLUMNS VALUES TBL EVAL UNITS PASS FAIL W E C EXT
#4CA64C66 1
col_vals_regex
col_vals_regex()
b r[a-z]-[0-9]{4} 4 2
0.50
2
0.50

The validation table reports two failing test units. The specific failing cases are for the string values of rows 1 and 2 in column b.