Matches Pattern Troubleshooting
Common problems when creating and running a Matches Pattern check, their causes, and how to resolve them.
Validation Fails When Creating the Check
Clicking Validate returns an error instead of a success message.
Cause: The rule could not run against the selected data. The most common reasons are an invalid Filter Clause expression, a connection problem with the source, or a container that failed to load.
Resolution:
- Review the error message: it explains what needs attention.
- Check the Filter Clause for typos: it must be a valid SQL
WHEREexpression for the selected container. - If the message says the container is marked as Unloadable, the container was skipped after repeated operation failures. Follow the steps in Unloadable Container Error.
Values With Extra Text Around Them Pass
A row holding more than the expected value is accepted.
Cause: The expression is not anchored, so it matches anywhere inside the value.
Resolution: Wrap the expression in ^ and $ so the whole value must match.
Values That Look Right Are Flagged
A value looks identical to what the pattern should accept.
Cause: Matching is literal about case and whitespace. A different case, a leading space, or a trailing space breaks an anchored pattern.
Resolution: Compare the flagged value character by character. Widen the expression ([A-Za-z] instead of [A-Z]), allow optional whitespace, or normalize the column upstream.
Empty Strings Are Flagged but NULLs Are Not
Rows with '' are reported while rows with no value pass.
Cause: An empty string is a present value that fails any pattern requiring at least one character; NULL is absence and passes by design.
Resolution: This is expected. Pair with Not Null when absence should also be reported, and normalize '' to NULL upstream when the two should behave the same.
An Array Check Reports One Shape Anomaly Instead of Failing Rows
A check on an array field reports a single dataset-level anomaly, and a row is counted as failing even though only one of its elements is wrong.
Cause: On array fields the check evaluates every element, and a row counts as failing as soon as one element does not match. The evaluation is column-level, so the result is always a Shape Anomaly, never per-row Record Anomalies.
Resolution: This is expected behavior. Use the Shape Anomaly's sampled source records to find the rows, then review each array to find the offending element.
An Edited Check Keeps Behaving the Old Way
You changed the configuration but the anomaly list did not change.
Cause: Edits take effect on the next Scan. Saving the check does not re-evaluate the data, and anomalies raised under the previous configuration are not modified.
Resolution: Run a Scan on the container (or wait for the scheduled one). Old anomalies stay open until you triage them or a Full scan with Auto Resolve clears them. See What Happens to Existing Anomalies.
No Anomalies Although the Data Looks Wrong
A Scan ran, the data clearly breaks the rule, but nothing was reported.
Cause: One of these configurations is excluding the violations:
- The check is in Draft status: Draft checks are not evaluated by Scans.
- The Filter Clause excludes those rows before the evaluation runs.
- Coverage is below 100% and the failing fraction stayed within the tolerance, so the check passed.
Resolution: Confirm the check is Active and test the filter expression against the offending rows. Then review the coverage setting; see Coverage and Tolerance.
Expected One Anomaly per Row, Got a Single Rolled-Up One
Many rows failed, but the scan reported one Shape Anomaly instead of per-row Record Anomalies.
Cause: When the number of failing rows exceeds the scan's rollup threshold, the per-row findings are grouped into one rolled-up Shape Anomaly.
Resolution: This is expected behavior; the rolled-up anomaly carries sampled source records. To change the threshold, see Maximum Record Anomalies per Check.