providers.*; providers_quality holds
measurements about those tables.
Use the latest snapshot across the Workspace or the history for one Provider
table:
Only main Provider tables receive quality sidecars. Identity tables,
artifacts, and
Parable results do not.
Understand the measurements
Quality checks
Quality checks compare a Provider table with thresholds defined by its stream’s quality configuration and schema roles. Each row represents one check on one table.SKIPPED is not a pass. It means the rule could not evaluate.
Promote-time checks scan the committed Delta table with its stored column
types. A reseal replays the day’s promote transaction, so a day committed
under an earlier plan keeps the types it was written with; a check whose
target column is stored as a string skips on that stored type instead of
failing the unit. Retyping a stored column takes a table restatement.
no_future_timestamp needs to know the unit of the column it reads. A
timestamp column carries its own. An integer column is compared only when its
schema field declares x-temporal-format (unix, unix_millis, and so on);
an integer metadata_timestamp with no declared format is SKIPPED with
integer metadata timestamp declares no x-temporal-format, because seconds,
milliseconds and microseconds are all plausible readings
(PARABLE-4232).
Checks run when a table is promoted and on its scheduled cadence. Read the
lifecycle column with the result: the two evaluations cover different rows.
On a table that holds current state, the rows carrying a load’s
dt are the
load’s own rows and the rows it newly marked missing, not the whole table
(see Read row state).
A promote PASS can coexist with duplicates across loads. Use the latest
cadence result to assess the whole table, and check captured_at against its
latest load. A missing or older cadence result does not establish current
whole-table uniqueness. Production Workspaces may have no cadence rows at all:
on 2026-09-14 every published Career Certified result was a promote result
(PARABLE-3989). Until
that is resolved, a whole-table duplicate measurement needs the SQL check over
the table itself.
dupe_rate counts rows beyond the distinct combinations of the schema’s key
columns, divided by the total rows checked. A PASS means the rate satisfied
maxRate; only an observed rate of zero establishes uniqueness. Before treating
a repeated entity ID as a defect, confirm the table’s record grain: an event or
history table can legitimately hold several records for one entity and needs a
key that identifies each record.
For a query restricted to a date window, a nonzero whole-table duplicate rate
does not locate the duplicates inside that window. Inspect the records in the
same window and with the same key before drawing that conclusion.
Statistical process control
Statistical process control (SPC) uses a Shewhart control chart for platform-owned series such as row count and column null percentage. It complements explicit quality checks; it does not replace them.
Tracked series kinds include
TABLE_ROW_COUNT, COLUMN_NULL_PCT,
COLUMN_VALIDATION_FAILURE_PCT, COLUMN_DISTINCT_COUNT, and COLUMN_AVG.
Shape and health
Shape statistics record measurements such as row count, column count, and bytes. Distinct counts skip engine-owned_parable_*, _raw_*, and
_custom_fields columns — those payloads are not user columns, and a
distinct count of the raw row is the row count. String and binary distinct
counts are HyperLogLog approximations (approx_distinct); integer,
timestamp, boolean, and decimal columns still use exact COUNT(DISTINCT).
distinct_counts_exact is false when any column used an approximation or
is nested.
Health is the catalog annotation for a table, including its state,
reason, and watermark. Health and the quality/SPC rollups are related views,
but they are computed through different paths.
Query the latest Workspace snapshot
These summary tables contain the current result per Provider table:
Failing checks for Google Workspace data:
Query one table’s history
History suffixes map to result kinds:
Recent checks for Google Workspace directory users:
result_id, run_id,
evidence_json for checks, and violations_json for SPC when an application
needs the payload behind a status.
Older sidecar records can use statuses such as
Fail or OutOfBounds; newer
records use FAIL and OUT_OF_BOUNDS. Summary tables use typed decoding and
return uppercase values. If a history query unexpectedly returns no rows,
inspect the available values before choosing a casing-sensitive filter.