How Equal To Field Checks Work
Definition
Asserts that a field equals another field on the same row.
Overview
The Equal To Field rule compares two columns of the same record. The evaluated field must equal the field named in Field to compare, row by row. Because the reference is a column rather than a constant, the rule stays correct as the data changes: there is no value to keep updating when the business figure moves.
Three optional comparators relax the equality per type, so text that differs only in spacing, timestamps that differ by seconds, or amounts that differ in the last decimal do not have to be reported.
Typical use cases:
- Keep a denormalized copy in step with the column it was copied from.
- Confirm two systems wrote the same figure into the same row.
- Verify that a recalculated value still matches the stored one after a migration.
Field Scope
Single: The rule evaluates one field per check. That field is compared against the column named in Field to compare, on the same row.
Accepted Types
| Type | Supported |
|---|---|
String |
|
Date |
|
Timestamp |
|
Integral |
|
Fractional |
Anomaly Types
| Type | Supported |
|---|---|
| Record Flag inconsistencies at the row level |
|
| Shape Flag inconsistencies in the overall patterns and distributions of a field |
Evaluation Flow
Every Equal To Field check follows the same four-step evaluation flow:
- Apply the filter clause. If the check has a
filterset, only rows matching the filter expression continue to the next step. Rows outside the filter are ignored and cannot contribute to the violation count. - Read both fields on the row. The platform reads the evaluated field and the field named in Field to compare from the same record.
- Compare them. The row passes when the two values are equal. When a comparator is configured for the type being compared, its normalization or tolerance is applied first, so a near-miss inside the margin still passes.
- Apply coverage. At 100% coverage, any failing row causes the check to fail. Below 100% coverage, the check fails only when the passing fraction drops below the threshold (see Coverage and Tolerance).
Only the Matching Comparator Applies
Each comparator is tied to a set of field types: Numeric to Integral and Fractional, Datetime to Date and Timestamp, String to String. The platform does not silently ignore a comparator that does not match the evaluated field's type; it rejects the check with a 422, so a Numeric tolerance cannot be saved on two text columns.
The String comparator offers a single option, Ignore Whitespace. With it on, both sides are trimmed and every run of internal whitespace is collapsed to a single space before the values are compared. Text comparison is always case-sensitive: there is no case-insensitive option, so EMEA and emea are reported as different.
The Reference Moves With the Row
Because the reference is a column, the rule keeps holding as the data changes. That is its main advantage over Equal To, and also its main limitation: if the reference column itself is wrong, the check passes. Point it at the column you trust, and consider a separate check on the reference itself.
NULL Handling
Without a comparator the check passes NULL values: a row where either side is empty is not counted as a violation. Equal To Field only asserts that two present values agree.
Once any comparator is configured, a row passes only when both sides are present and comparable, or when both sides are NULL. A row populated on one side and empty on the other is then reported as a violation.
If both columns must always be filled in, pair the check with Not Null on each of them.
The Filter Clause
The filter clause is a SQL WHERE expression applied before the evaluation. Filtered-out rows are ignored entirely (they cannot trigger a violation and are not counted in the totals).
When a filter is set, both the Record Anomaly and the Shape Anomaly messages end with [filter: <expression>] so the evaluated scope is visible in the alert.
Coverage and Tolerance
Coverage is a fractional value between 0 and 1 that defines the minimum fraction of evaluated rows that must pass:
1.0(100%, default): every row in the filtered set must pass. Any failing row causes the check to fail. This is the strictest setting.< 1.0: the check tolerates a fraction of rows failing. The check fails only when the fraction of passing rows drops below the threshold.
Lower coverage values are useful when a small, known fraction of failures is expected. Use coverage carefully: a 0.5% tolerance can mask a real regression that happens to fall just under the threshold.
See Also
-
Anomaly Reporting
The anomaly messages the check produces, what the numbers mean, Source Records highlighting, and Custom Anomaly Description.
-
Examples
Three production scenarios with sample data, anomaly messages, and the SQL equivalent of what the check evaluates.
-
Best Practices
Guidelines for choosing the reference field, setting tolerances, and deciding between this rule and its alternatives.
-
Permissions
The team permission each action needs: view, create, edit, archive, restore, and delete.