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. Every other distinct count
is a HyperLogLog approximation (approx_distinct), so its memory does not
grow with the table (PARABLE-4794). distinct_counts_exact is false
whenever any column was counted, and true only when none was.
A table whose Delta log counts more rows than the stats job’s scan limit
(PROVIDER_TRANSFORMATIONS_STATS_SCAN_MAX_ROWS, 50 million by default) is
read through a deterministic sample of its files that holds about that many
rows. The snapshot records the rows it read as sampled_row_count, which
is null for a whole-table snapshot. In a sampled snapshot:
The same files are sampled on every run against the same table version, so a
series keeps its meaning from run to run. The Query Layer passes a sampled
snapshot’s column values to the query planner as estimates, never as exact
values.
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:
Each summary row describes one Provider table, so it follows that table’s
Provider Policy: someone the Policy narrows
or hides the table for gets none of its rows here.
In all four tables,
connector and table_name are the catalog’s schemaName
and logicalName for the Provider table, the schema and table of its SQL
address: the row for providers.google.users has connector = 'google' and
table_name = 'users'. They follow the rules in
Provider table names,
so a connector slug written with - appears here with _.
table_commits reads each table’s Delta log when asked, at most once a minute
per table. Filter it on connector so only those Providers’ logs are read:
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.