Skip to main content
Provider quality is a companion query catalog, not another data pool. Provider tables hold business records at 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:
Every check that did not pass:
Whole-table duplicate measurements for the Workspace:
This query returns only tables with a cadence result. Check the per-table history and load status when an expected table has no row. SPC series with a warning, control-limit breach, or recorded violation:
Largest Provider tables by row count:
Provider tables with stale watermarks:

Query one table’s history

History suffixes map to result kinds: Recent checks for Google Workspace directory users:
Row-count SPC over time for the same table:
History tables retain each run. They can also expose 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.