What Unity Catalog grants and system.* schemas gate which queries — so you can tell in advance what will run — and what to do when a query returns nothing, a band reads NOT ASSESSED, or the dollars look off.
Each query reads one or more system.* schemas. Granting SELECT on a schema (and enabling it for the metastore where it’s in preview) unlocks every query that reads it.
| System schema | Queries it unlocks | Domains |
|---|---|---|
system.billing | 37 | Cost & Billing, Compute, Jobs & Pipelines, Model Serving & AI |
system.lakeflow | 21 | Jobs & Pipelines |
system.query | 12 | Query Performance |
system.access | 11 | Cost & Billing, Governance, Access & Security |
system.compute | 11 | Compute, Jobs & Pipelines |
system.information_schema | 9 | Storage & Optimization, Governance, Access & Security |
system.storage | 5 | Storage & Optimization |
system.serving | 3 | Model Serving & AI |
system.data_classification | 2 | Governance, Access & Security |
system.ai_gateway | 1 | Model Serving & AI |
none - DESCRIBE EXTENDED output; not a system table | 1 | Storage & Optimization |
none - ANALYZE TABLE COMPUTE STORAGE METRICS output; not a system table | 1 | Storage & Optimization |
none - DESCRIBE EXTENDED / SHOW TBLPROPERTIES output; not a system table | 1 | Storage & Optimization |
Sums exceed 96 because many queries read more than one system.* schema, so they are counted under each schema they touch. And a schema grant unlocks its queries but not always a whole domain: Cost, for example, includes one query (the workspace-name lookup, cost_workspace_names) that reads system.access, so a system.billing grant alone unlocks 22 of the 23 Cost queries — not the whole domain.
Per query: its tier (how heavy), the exact grant it requires, and the system.* tables it reads. Tier is a labelled field heuristic for run order, not a Databricks classification: lite = GA schemas plus a single grant; standard = a commonly-enabled schema, usually a join or window; deep = a heavier scan or a preview / feature-gated table.
| Query | Tier | Requires | Reads |
|---|---|---|---|
| Discount Realization by SKU (actual vs list)cost_actual_vs_list_by_sku | Deep | SELECT on system.billing; GA | system.billing.usagesystem.billing.list_prices |
| Per-Job DBU Cost Rankingcost_by_job | Standard | SELECT on system.billing; GA | system.billing.usage |
| Chargeback Coverage by Tagcost_chargeback_by_tag | Standard | SELECT on system.billing; GA | system.billing.usage |
| Dollarizing DBUs at List Pricecost_dollarized_by_sku_day | Deep | SELECT on system.billing; GA | system.billing.usagesystem.billing.list_prices |
| Serverless, Photon & Tier Premiumscost_premium_serverless_photon | Standard | SELECT on system.billing; GA | system.billing.usage |
| Your List-Price Basis by SKUcost_account_prices_raw | Lite | SELECT on system.billing; GA | system.billing.list_prices |
| Where the Money Goes by Productcost_by_billing_origin_product | Lite | SELECT on system.billing; GA | system.billing.usage |
| Cost Per Cluster and Warehousecost_by_compute_resource | Standard | SELECT on system.billing; GA | system.billing.usage |
| Ad-hoc notebook DBU costcost_by_notebook | Standard | SELECT on system.billing; GA | system.billing.usage |
| Serving & Vector Spend by Endpointcost_by_serving_endpoint | Standard | SELECT on system.billing; GA | system.billing.usage |
| Chargeback DBUs by Identitycost_chargeback_by_identity | Standard | SELECT on system.billing; GA | system.billing.usage |
| Estimated Cloud Spend, DBU-Derivedcost_cloud_infra | Deep | SELECT on system.billing; GA | system.billing.usagesystem.billing.list_prices |
| DBSQL Allocation Gap Checkcost_dbsql_allocation_gap | Deep | SELECT on system.billing; GA | system.billing.usagesystem.billing.attributed_usage |
| Default-Storage DSU by API Tiercost_default_storage_dsu | Standard | SELECT on system.billing; GA | system.billing.usage |
| GenAI Token & GPU Spendcost_genai_token_gpu | Standard | SELECT on system.billing; GA | system.billing.usage |
| Billed Data Egress Signalcost_networking_egress | Standard | SELECT on system.billing; GA | system.billing.usage |
| Can You Trust the Bill?cost_restatement_trust_metric | Lite | SELECT on system.billing; GA | system.billing.usage |
| Model-Serving Cost Mode Per Endpointcost_serving_mode_by_endpoint | Deep | SELECT on system.billing; GA | system.billing.usagesystem.billing.list_prices |
| The Base Billing Rollupcost_totals_by_sku_day | Standard | SELECT on system.billing; GA | system.billing.usage |
| Serverless Policy Coverage Gapscost_usage_policy_coverage | Standard | SELECT on system.billing; GA | system.billing.usage |
| Vector Search Spend by Endpointcost_vector_search_spend | Deep | SELECT on system.billing; GA | system.billing.usagesystem.billing.list_prices |
| Workspace ID to Name Lookupcost_workspace_names | Lite | SELECT on system.access; GA | system.access.workspaces_latest |
| The List-Price Rate Bookpricing_list_prices_raw | Lite | SELECT on system.billing; GA | system.billing.list_prices |
| Query | Tier | Requires | Reads |
|---|---|---|---|
| Warehouse Idle-Tail Secondscompute_warehouse_idle_gaps | Standard | SELECT on system.compute, system.billing; GA | system.compute.warehouse_eventssystem.billing.usagesystem.billing.list_prices |
| Live Classic Cluster Config Baselineclassic_clusters_config_current | Lite | SELECT on system.compute; GA | system.compute.clusters |
| Idle Classic Clusters, Rankedcompute_idle_node_ratio | Standard | SELECT on system.compute, system.billing; GA | system.compute.node_timelinesystem.billing.usagesystem.billing.list_prices |
| SQL Warehouses Thrashing Clusterscompute_warehouse_autoscale_churn | Standard | SELECT on system.compute, system.billing; GA | system.compute.warehouse_eventssystem.billing.usagesystem.billing.list_prices |
| Spot Mix and Instance Idle Signalinstance_events_idle_active | Lite | SELECT on system.compute; Public Preview (system.compute.instance_events may be empty or disabled per workspace) | system.compute.instance_events |
| Idle Instance-Pool Waste Snapshotinstance_pools_idle_capacity | Standard | SELECT on system.compute, system.billing; Public Preview (system.compute.instance_pools may be empty or disabled per workspace) | system.compute.instance_poolssystem.billing.usagesystem.billing.list_prices |
| Right-Sizing Evidence From Node Telemetrynode_timeline_utilization | Lite | SELECT on system.compute; GA | system.compute.node_timeline |
| Node Type Hardware Spec Catalognode_types_reference | Lite | SELECT on system.compute; GA | system.compute.node_types |
| Live SQL Warehouse Config Baselinesql_warehouse_config_current | Lite | SELECT on system.compute; GA | system.compute.warehouses |
| SQL Warehouse Event Activitysql_warehouse_events_activity | Lite | SELECT on system.compute; GA | system.compute.warehouse_events |
| Query | Tier | Requires | Reads |
|---|---|---|---|
| Failing Jobs Ranked by Wasted DBUslakeflow_failed_jobs_wasted_dbus | Deep | SELECT on system.lakeflow, system.billing; GA | system.lakeflow.job_run_timelinesystem.billing.usagesystem.billing.list_prices |
| Job Tasks On All-Purpose Computelakeflow_jobs_on_all_purpose | Standard | SELECT on system.lakeflow, system.compute, system.billing; GA | system.lakeflow.job_task_run_timelinesystem.compute.clusterssystem.billing.usagesystem.billing.list_prices |
| Job Failure Breakdown by Root Causelakeflow_failed_runs | Lite | SELECT on system.lakeflow; GA | system.lakeflow.job_run_timeline |
| Job Health-Rule Coveragelakeflow_health_rule_coverage | Standard | SELECT on system.lakeflow; GA (health_rules was added late Nov 2025) | system.lakeflow.jobs |
| Orphaned And Handed-Off Jobslakeflow_job_ownership_orphans | Standard | SELECT on system.lakeflow; GA (creator_user_name/run_as_user_name were added late Nov 2025) | system.lakeflow.jobs |
| Jobs Stuck Waiting On Capacitylakeflow_job_queue_time | Standard | SELECT on system.lakeflow; GA (queue_duration_seconds was added late Nov 2025) | system.lakeflow.job_run_timeline |
| Task-Level Timeout Coverage Gapslakeflow_job_tasks_no_timeout | Standard | SELECT on system.lakeflow, system.billing; GA (job_tasks.timeout_seconds was added late Nov 2025) | system.lakeflow.job_taskssystem.billing.usagesystem.billing.list_prices |
| Jobs Missing a Timeoutlakeflow_jobs_no_timeout | Standard | SELECT on system.lakeflow, system.billing; GA (timeout_seconds was added early Dec 2025) | system.lakeflow.jobssystem.billing.usagesystem.billing.list_prices |
| Runs Killed Before They Launchedlakeflow_never_started_runs | Lite | SELECT on system.lakeflow; GA | system.lakeflow.job_run_timeline |
| Where Job Time Actually Goeslakeflow_phase_cold_start | Lite | SELECT on system.lakeflow; GA (the five *_duration_seconds columns were added early Dec 2025) | system.lakeflow.job_run_timeline |
| Per-Pipeline Cost and Over-Refreshlakeflow_pipeline_cost | Deep | SELECT on system.billing, system.lakeflow; GA (system.billing.usage/list_prices); Public Preview (system.lakeflow.pipelines and pipeline_update_timeline - a missing/disabled table degrades names/updates to NULL, never the DBU attribution) | system.billing.usagesystem.billing.list_pricessystem.lakeflow.pipelinessystem.lakeflow.pipeline_update_timeline |
| Pipeline Active-Time and Idle-Tail Signallakeflow_pipeline_idle_tail_duration | Standard | SELECT on system.lakeflow, system.billing; Public Preview (system.lakeflow.pipelines and pipeline_update_timeline); GA (system.billing.usage/list_prices) | system.lakeflow.pipeline_update_timelinesystem.lakeflow.pipelinessystem.billing.usagesystem.billing.list_prices |
| Pipeline Refresh Failures And Retrieslakeflow_pipeline_update_failures_retries | Lite | SELECT on system.lakeflow; Public Preview (system.lakeflow.pipeline_update_timeline) | system.lakeflow.pipeline_update_timeline |
| DLT Pipeline Fleet Inventorylakeflow_pipelines_inventory_tier | Lite | SELECT on system.lakeflow; Public Preview (system.lakeflow.pipelines) | system.lakeflow.pipelines |
| Flapping Jobs That Retrylakeflow_retries_repairs | Standard | SELECT on system.lakeflow, system.billing; GA | system.lakeflow.job_run_timelinesystem.billing.usagesystem.billing.list_prices |
| Hunting Stale Zombie Jobslakeflow_stale_zombie_jobs | Standard | SELECT on system.lakeflow, system.billing; GA | system.lakeflow.jobssystem.lakeflow.job_run_timelinesystem.billing.usagesystem.billing.list_prices |
| Green Runs Hiding Failed Taskslakeflow_succeeded_with_failed_tasks | Lite | SELECT on system.lakeflow; GA | system.lakeflow.job_run_timelinesystem.lakeflow.job_task_run_timeline |
| Tasks Running Near Timeoutlakeflow_tasks_near_timeout | Standard | SELECT on system.lakeflow; GA (execution_duration_seconds and timeout_seconds were both added late Nov 2025) | system.lakeflow.job_task_run_timelinesystem.lakeflow.job_tasks |
| Job Failure Root-Cause Breakdownlakeflow_termination_taxonomy | Lite | SELECT on system.lakeflow; GA | system.lakeflow.job_run_timeline |
| Discover Job Termination-Type Valueslakeflow_termination_type_probe | Lite | SELECT on system.lakeflow; GA (the column exists; its value enum is unverified - see caveats) | system.lakeflow.job_run_timeline |
| Daily Job Run Mix And Hourslakeflow_workload_mix_hours | Lite | SELECT on system.lakeflow; GA (execution_duration_seconds was added early Dec 2025) | system.lakeflow.job_run_timeline |
| Query | Tier | Requires | Reads |
|---|---|---|---|
| AI Gateway Abuse Signalscompute_ai_gateway_usage | Standard | SELECT on system.ai_gateway; must be enabled per-metastore (empty until AI Gateway is enabled on an endpoint) | system.ai_gateway.usage |
| Idle Serving Endpoints You Pay Forcompute_serving_dormant_endpoints | Deep | SELECT on system.serving, system.billing; system.serving must be enabled per-metastore (empty until Model Serving is in use); system.billing is GA. | system.serving.served_entitiessystem.serving.endpoint_usagesystem.billing.usagesystem.billing.list_prices |
| Daily Serving Endpoint Trafficcompute_serving_endpoint_usage | Deep | SELECT on system.serving, system.billing; system.serving must be enabled per-metastore (empty until Model Serving is in use); system.billing is GA. | system.serving.served_entitiessystem.serving.endpoint_usagesystem.billing.usagesystem.billing.list_prices |
| Serving Endpoint Traffic Rollupserving_endpoint_traffic_by_endpoint | Deep | SELECT on system.serving, system.billing; system.serving must be enabled per-metastore (empty until Model Serving is in use); system.billing is GA. | system.serving.endpoint_usagesystem.serving.served_entitiessystem.billing.usagesystem.billing.list_prices |
| Query | Tier | Requires | Reads |
|---|---|---|---|
| Detecting UniForm & Managed-Iceberg Tablesiceberg_uniform_metadata | Deep | DESCRIBE / SELECT privilege on the target table; Unity Catalog required (UniForm / managed-Iceberg detection is a UC feature) | none - DESCRIBE EXTENDED output; not a system table |
| Liquid Clustering Work and Costpo_clustering_activity | Standard | SELECT on system.storage; Public Preview (system.storage.predictive_optimization_operations_history), regional | system.storage.predictive_optimization_operations_history |
| Clustering Key Churn Detectorpo_clustering_column_churn | Deep | SELECT on system.storage; Public Preview (system.storage.predictive_optimization_operations_history), regional | system.storage.predictive_optimization_operations_history |
| Data-Skipping Stats Backfill Trackerpo_data_skipping_backfill | Deep | SELECT on system.storage; Public Preview (system.storage.predictive_optimization_operations_history), regional | system.storage.predictive_optimization_operations_history |
| Predictive Optimization Cost & Coveragepo_maintenance_cost_by_table | Standard | SELECT on system.storage; Public Preview (system.storage.predictive_optimization_operations_history), regional, 180-day retention | system.storage.predictive_optimization_operations_history |
| VACUUM Storage Reclaimed Per Tablepo_vacuum_reclaimed_bytes | Standard | SELECT on system.storage; Public Preview (system.storage.predictive_optimization_operations_history), regional | system.storage.predictive_optimization_operations_history |
| Real Table Size Breakdownstorage_breakdown_analyze | Deep | privilege sufficient to run ANALYZE TABLE on the target table; GA but requires DBR 18.0+ (COMPUTE STORAGE METRICS is not available on older runtimes) | none - ANALYZE TABLE COMPUTE STORAGE METRICS output; not a system table |
| Table Inventory by Type and Formattable_inventory_type | Deep | SELECT on system.information_schema; Unity Catalog required | system.information_schema.tables |
| Delta Time-Travel & Optimize Settingstable_props_time_travel_config | Standard | DESCRIBE / SELECT privilege on the target table; GA (standard Delta Lake table properties) | none - DESCRIBE EXTENDED / SHOW TBLPROPERTIES output; not a system table |
| Query | Tier | Requires | Reads |
|---|---|---|---|
| Run-As Privilege Escalation Watchaccess_runas_escalation | Deep | SELECT on system.access; Public Preview | system.access.audit |
| Who Changed Permissions, From Whereaccess_admin_role_change_events | Standard | SELECT on system.access; Public Preview | system.access.audit |
| Sensitive Columns Missing Their Maskaccess_classified_unmasked | Standard | SELECT on system.data_classification and system.information_schema; system.data_classification is Public Preview and requires Unity Catalog; column_masks is Public Preview (DBR 12.2 LTS+) | system.data_classification.resultssystem.information_schema.column_masks |
| Column-Level Lineage Blast Radiusaccess_column_lineage_sensitive_reach | Deep | SELECT on system.access; GA | system.access.column_lineage |
| Which Columns Are Actually Maskedaccess_column_masks_inventory | Standard | SELECT on system.information_schema; Public Preview, DBR 12.2 LTS+, Unity Catalog required | system.information_schema.column_masks |
| Where Sensitive Data Actually Livesaccess_data_classification_inventory | Standard | SELECT on system.data_classification; Public Preview, Unity Catalog required, needs the data-classification feature AND the system.data_classification schema both enabled | system.data_classification.results |
| Dead-Table Cleanup Candidatesaccess_dead_table_candidates | Standard | SELECT on system.access and system.information_schema; system.access.table_lineage is GA; information_schema requires Unity Catalog | system.access.table_lineagesystem.information_schema.tables |
| Who Holds Which Grantsaccess_grants_inventory | Standard | SELECT on system.information_schema; Unity Catalog required | system.information_schema.table_privilegessystem.information_schema.catalog_privileges |
| Grants on Schemas and Integrationsaccess_grants_inventory_extended | Standard | SELECT on system.information_schema; Unity Catalog required | system.information_schema.schema_privilegessystem.information_schema.connection_privilegessystem.information_schema.credential_privilegessystem.information_schema.external_location_privileges |
| Login Concentration & Anomaly Rollupaccess_login_concentration | Standard | SELECT on system.access; Public Preview | system.access.audit |
| Blocked Inbound Network Attemptsaccess_network_inbound_denials | Deep | SELECT on system.access; Public Preview | system.access.inbound_network |
| Blocked Egress Exfiltration Attemptsaccess_network_outbound_denials | Deep | SELECT on system.access; Public Preview | system.access.outbound_network |
| PII Leaking Into Untagged Columnsaccess_pii_propagation_untagged | Standard | SELECT on system.access and system.information_schema; system.access.column_lineage is GA; information_schema requires Unity Catalog | system.access.column_lineagesystem.information_schema.column_tags |
| Row Filter Coverage Inventoryaccess_row_filters_inventory | Standard | SELECT on system.information_schema; Public Preview, DBR 12.2 LTS+, Unity Catalog required | system.information_schema.row_filters |
| Table Lineage Blast Radiusaccess_table_lineage_blast_radius | Standard | SELECT on system.access; GA | system.access.table_lineage |
| Manual Governance Tag Inventoryaccess_tags_inventory | Standard | SELECT on system.information_schema; Unity Catalog required | system.information_schema.column_tagssystem.information_schema.table_tags |
| Vector Search Query Traffic by Endpointaccess_vector_search_traffic | Standard | SELECT on system.access; Public Preview | system.access.audit |
Almost always a schema-enablement gap, not an empty account. Several system.* schemas (e.g. system.query, system.lakeflow, system.serving) are still in preview or must be enabled per-metastore. Check the query’s Requires line and the reads column below: if it names a schema you haven’t enabled, that is the cause. A genuinely quiet account (no failures, no idle clusters) can also legitimately return nothing.
By design. Inventory and reference queries return NOT ASSESSED at runtime because they carry no pass/fail band — they return state to read (a configuration, a price basis, a role list), so there is no OK/WARN/CRITICAL to compute. It is a runtime outcome, not a column in the matrix above. The money-trust queries also leave the dollar figure “not assessed” when Databricks exposes no per-row DBU column: that is an honest gap, not an omission — the magnitude (count, runtime, quantity) is still reported.
The schema isn’t enabled for your metastore, or your principal lacks SELECT on it. Every query’s Requires line states the grant it needs (e.g. SELECT on system.billing; GA). Grant SELECT on the parent system schema (or ask your account admin to enable it) — the coverage matrix below shows how many queries a single grant unlocks.
When system.billing.account_prices is absent (it is not present in every environment), the queries fall back to list price and label the figure est · at list — pre-discount, DBU-only, and directional, never your negotiated invoice. An untagged or unpriced slice means one GROUP BY group had no matching price row, not that the whole account is unpriced. See the reference glossary for the list-vs-account and est · at list definitions.
New here? Start with the first-audit runbook, follow an investigation trail, and keep the reference & glossary open.