Is Type Check FAQ
Answers to common questions about how the Is Type check reads text as a typed value, which types it accepts, and how anomalies are reported, grouped by topic.
Behavior
Which types can I check for?
Integral, Fractional, Boolean, Date, and Timestamp. Text is not on the list, because every value is already text and the check would pass unconditionally. Structured types such as maps and arrays of structs are not testable this way.
Does the check convert the column?
No. It reports which values could be read as the chosen type and leaves the column as text. Use a Computed Field when you want the typed value available in the platform.
How are NULL values treated?
NULLs pass. An empty string does not: it is a present value that cannot be read as any testable type. Pair with Not Null when absence should also be reported.
Why does a whole number fail a Fractional check, or a decimal fail an Integral one?
Integral accepts whole numbers only; Fractional accepts whole and decimal numbers. Pick the type the downstream consumer expects.
What happens on an array field?
Every element is tested against the expected type, and the row fails as soon as one element cannot be read as it. Empty arrays and NULL arrays pass, since there is nothing to evaluate.
Anomaly Reporting
What do the anomaly messages look like?
Record Anomaly: The field '<field_name>' has value '<row_value>', which is not a valid <type>
Shape Anomaly: For the field '<field_name>', X.XXX% of N records (K) are not a valid <type>
When a filter is set, both messages end with [filter: <expression>].
Does Is Type produce Record Anomalies, Shape Anomalies, or both?
At 100% coverage (the default), violating rows are reported as Record Anomalies. Below 100% coverage, a failed coverage assertion produces one Shape Anomaly for the dataset. A scan can also roll up a large number of Record Anomalies into one Shape Anomaly.
Does Custom Anomaly Description work for Is Type?
Yes. Is Type emits Record Anomalies, so the anomaly_message_field payload field (and the Custom Anomaly Description toggle in the UI) replaces the Record Anomaly message with the value of the named column on the violating row. When that column is null, missing, or empty, the standard Record template is used instead. The Shape Anomaly always uses the fixed template.
Configuration
Can I lower the coverage on an Is Type check?
Yes. Coverage at 1.0 (100%) means every row must pass. Lowering coverage to 0.995 allows up to 0.5% of rows to fail without raising an anomaly; once the failing fraction goes past that, the check reports a Shape Anomaly. Use lower coverage with care: a real regression that happens to fall just under the threshold will not raise an alert at all.
Can I change the expected type on an existing check?
Yes. In the UI, open the check, pick a different Field Type, and click Update; see Edit a Check for the full steps. Through the API, a PUT to /api/quality-checks/{id} updates properties.field_type. The rule type, the target container, and the associated Check Template stay immutable; see the API page for the editable/immutable matrix.
What permission do I need to create or edit an Is Type check?
The Drafter team permission on the datastore covers Draft work (creating a check as Draft or editing it while it stays Draft). Anything that puts the check into evaluation, such as creating or editing an Active check, archiving, or deleting, requires the Author team permission (or above). Viewing only requires Reporter. See Permissions for the full matrix.
Should I use Is Type or Matches Pattern?
Use Is Type when the rule is "this text must be a number, a boolean, or a date". Use Matches Pattern when the rule is about the shape of the text itself, such as a code that happens to be digits but must keep its leading zeros.