Not Empty Best Practices
Guidelines for getting reliable signal from Not Empty checks while keeping the noise (and the maintenance) low.
Pair it with Not Null whenever the column is mandatory
Neither rule implies the other: Not Null passes an empty string, and Not Empty passes an unset value. Two checks on the same field is the honest way to say "this must be filled in with something", and each anomaly then tells you which of the two problems you have.
Fix blankness upstream rather than tolerating it
Empty strings almost always come from a form, an import, or a transformation that writes '' instead of leaving a column unset. Lowering coverage hides that; correcting the writer removes a whole class of downstream surprises, because an empty string joins, groups, and sorts as a real value.
Use Min Length when the elements of an array must carry content
On an array field this rule only asserts the list is not empty. Min Length with Array Element Context enabled evaluates each element, which is what you want when an array of blank strings should be reported. Leave that option off and Min Length counts the elements instead, which an array of blank strings passes just as easily.
State the real constraint when "empty" means something more specific
A code that must be five characters is a Min Length rule; one that must match a shape is Matches Pattern; one that must come from a known set is Expected Values. Not Empty is the floor, not the whole requirement.
Keep coverage at 100% unless a known backlog exists
At 100% coverage every failing row is reported as a Record Anomaly, which tells you exactly which rows break the rule. Below 100% the check reports a single Shape Anomaly only when the failing fraction crosses the tolerance, and no per-row detail is produced. Lower coverage only while a known set of legacy rows is being cleaned up.
Scope with a filter instead of loosening coverage
When the rule only applies to part of the table (one segment, one channel, one period), express that with a filter clause rather than by lowering coverage. The filter removes the out-of-scope rows from evaluation entirely, and the expression is echoed in every anomaly message.
Route the anomalies to the right people
A failure usually points at the system that produced the value, not at the warehouse. Set an Anomaly Assignee from the team that owns that producer, and tag the check so related checks are easy to find.
See Also
-
Permissions
The team permission each action needs: view, create, edit, archive, restore, and delete.
-
How It Works
The complete reference: definition, field scope, what counts as empty, how array fields behave, NULL handling, filter behavior, and coverage.
-
Anomaly Reporting
The anomalies the check produces on text and on array fields, and how the offending value appears in Source Records.
-
Examples
Three production scenarios with sample data, anomaly messages, and the SQL equivalent of what the check evaluates.