2.2 Lineage Inspection & Data Traceability
Key Takeaways
- Unity Catalog automatically captures runtime table-level and column-level lineage for all SQL queries and Delta Live Tables pipelines without manual instrumentation since Runtime 11.3 LTS.
- Lineage data is retained in Unity Catalog system tables (system.access.table_lineage and system.access.column_lineage) for 1 year (365 days).
- Column-level lineage traces transformations through CTEs, joins, aggregations, and CREATE TABLE AS SELECT (CTAS) statements down to the source tables and input columns.
- Accessing Unity Catalog lineage visual graph in Catalog Explorer requires SELECT privileges on the target table, while viewing lineage details across catalogs requires appropriate schema permissions.
2.2 Lineage Inspection & Data Traceability
Data lineage provides a comprehensive history of how data flows from origin to destination across an organization's analytics ecosystem. In the Databricks Data Intelligence Platform, data traceability is natively integrated into Unity Catalog. Unity Catalog captures table-level and column-level data lineage automatically during query execution without requiring manual pipeline annotations or third-party agent installations. Understanding lineage inspection is crucial for data analysts to trace data origins, perform impact analyses prior to schema refactoring, and ensure compliance with regulatory audit standards.
Unity Catalog Data Lineage Foundations
Unlike legacy data governance frameworks that rely on manual documentation or external parsing, Unity Catalog's lineage engine operates directly within the Databricks query execution runtime.
Automatic Lineage Capture Engine
Unity Catalog captures real-time data lineage for all SQL queries, Python/Scala DataFrame transformations, Delta Live Tables (DLT) pipelines, Auto Loader jobs, and AI/BI Dashboard queries executed within the workspace since Databricks Runtime 11.3 LTS.
Key operational characteristics of the lineage engine include:
- Zero Instrumentation Overhead: Lineage is extracted directly from the logical query execution plan generated by the Catalyst Optimizer, introducing zero execution latency on SQL Warehouses or all-purpose clusters.
- Cross-Language Traceability: Lineage captures data flows regardless of whether queries are authored in SQL, Python, Scala, or R.
- Granular Operation Tracking: Lineage tracks operations including
CREATE TABLE AS SELECT(CTAS),INSERT INTO,MERGE INTO,UPDATE,COPY INTO, and view materializations. - Format Support: Lineage is supported across all managed and external Delta Lake tables, registered views, and external data sources accessible via Unity Catalog foreign catalogs.
Table-Level vs. Column-Level Lineage
Unity Catalog tracks data dependencies at two distinct levels of granularity:
- Table-Level Lineage: Maps relationships between source tables/views and target tables/views. For example, if
gold_monthly_salesis built by joiningsilver_ordersandsilver_customers, table-level lineage records both silver tables as direct upstream parents ofgold_monthly_sales. - Column-Level Lineage: Traces individual column derivations through intermediate transformations, aggregations, window functions, and Common Table Expressions (CTEs). If
gold_monthly_sales.total_revenueis calculated asSUM(silver_orders.item_price * silver_orders.quantity), column-level lineage linkstotal_revenuedirectly toitem_priceandquantity.
Navigating Visual Lineage in Catalog Explorer
Data analysts can inspect data lineage visually through Catalog Explorer to understand dataset origins and evaluate downstream dependencies.
Interactive Lineage Graph UI
When viewing any table or view in Catalog Explorer, clicking the Lineage tab opens an interactive, DAG-based (Directed Acyclic Graph) visualization. Key features of the visual lineage interface include:
- Upstream and Downstream Navigation: The graph displays upstream source datasets on the left and downstream targets (including tables, views, AI/BI dashboards, Genie spaces, and ML models) on the right.
- Column Lineage Inspection: Clicking on any column highlights its specific lineage paths across the entire graph, dimming unrelated columns and tables.
- Depth Expansion: Users can expand graph nodes to trace data lineage up to 9 hops upstream or downstream.
- Asset Metadata Overlay: Hovering over graph nodes reveals table owner, data format, last update timestamp, and active tags.
Impact Analysis for Schema and Pipeline Modifications
Before altering a Gold-layer reporting table or dropping a column, data analysts must perform an impact analysis to prevent breaking downstream production assets.
| Impact Analysis Task | Catalog Explorer Lineage Workflow | Risk Mitigation |
|---|---|---|
| Dropping a Column | Select column -> View downstream nodes -> Check attached AI/BI Dashboards | Prevents breaking active executive dashboard widgets |
| Renaming a Table | View table lineage -> Identify downstream views and DLT pipelines | Updates SQL view definitions before altering base table |
| Upstream Data Bug | Select erroneous Gold metric -> Navigate upstream graph to Bronze source | Pinpoints raw ingestion files introducing corrupted records |
Querying Lineage System Tables for Programmatic Audits
While Catalog Explorer offers an intuitive visual interface, enterprise governance teams often require programmatic access to lineage data. Unity Catalog stores historical lineage in system tables under system.access.
Schema Structure of Lineage System Tables
Lineage events are retained in Unity Catalog system tables for 365 days (1 year). Analysts can query these tables directly using Databricks SQL.
| System Table | Description | Key Query Columns |
|---|---|---|
system.access.table_lineage | Records table-to-table dependencies and query metadata | source_table_full_name, target_table_full_name, entity_type, created_by, event_time |
system.access.column_lineage | Records column-to-column transformation mapping | source_column_name, target_column_name, source_table_full_name, target_table_full_name |
Auditing Downstream Dependencies with SQL
Data analysts can execute recursive or joined queries against system.access.column_lineage to identify all production tables relying on sensitive raw columns.
-- Querying column lineage to find all tables consuming SSN from raw landing
SELECT DISTINCT
cl.target_table_full_name,
cl.target_column_name,
cl.entity_type,
cl.created_by
FROM system.access.column_lineage cl
WHERE cl.source_table_full_name = 'raw_landing.hr.employee_onboarding'
AND cl.source_column_name = 'social_security_number'
ORDER BY cl.target_table_full_name;
To view lineage system tables, analysts must hold SELECT privileges on system.access schemas or be assigned the metastore admin / workspace admin role.
Real-World Scenario: Diagnosing Metric Anomalies in Executive Dashboards
In March 2026, an executive dashboard displays a sudden 40% drop in quarterly recurring revenue (QRR). The lead data analyst is assigned to trace the anomaly back to its root cause.
- Visual Lineage Tracing: The analyst opens the target dashboard in Catalog Explorer, clicks the Lineage tab, and identifies the Gold table
main.finance.gold_executive_metrics. - Column Lineage Inspection: Clicking on
qrr_amounthighlights upstream paths leading tosilver_subscriptions.monthly_feeandsilver_subscriptions.discount_rate. - Upstream Investigation: Expanding upstream lineage reveals that a recent ETL pipeline migration on March 15 replaced
silver_subscriptionswith an unvalidated staging view (stg_subscriptions_v2) wherediscount_ratewas incorrectly divided by 100 twice. - Resolution: Using lineage inspection, the analyst pinpoints the exact query line and intermediate view causing the metric corruption within 15 minutes, avoiding hours of manual code debugging.
How long does Unity Catalog retain historical lineage data within system tables such as system.access.table_lineage?
A data analyst needs to evaluate which downstream dashboards and views will break if a column in a Gold table is removed. Which feature in Databricks provides this visibility?
Which statement correctly describes how Unity Catalog captures data lineage across Databricks workspaces?