Lineage

What You'll Be Able to Do After This Module

  • Read a DataHub lineage graph: identify upstream sources and downstream consumers
  • Switch between table-level and column-level lineage views
  • Use downstream lineage to understand the impact of changing a table
  • Use upstream lineage to trace a broken metric back to its source
  • Complete the lab: trace a broken dashboard metric to the most likely point of failure
Read the lineage graph (up/downstream) Switch table-level vs. column-level views Use downstream lineage for impact analysis Use upstream lineage for root-cause tracing Lab: trace a broken dashboard metric

Lineage: A Map of How Data Flows

  • A directed graph: nodes are entities, edges are dependencies
  • Upstream (left): where did this data come from?
  • Downstream (right): what uses this data?
  • Nodes: tables, dbt models, Airflow DAGs, dashboards -- any DataHub entity
  • Edges: "table B was produced from table A" -- the direction of data flow
Upstream Downstream Raw Source Table Staging Table Dashboard

Four Reasons Lineage Is Not Optional

  • Impact analysis: before changing table A, see every downstream dashboard and table that depends on it
  • Root cause: a dashboard is broken -- trace upstream to find which source table introduced the error
  • Trust: understand the full transformation chain between raw data and a business metric
  • Compliance: trace PII from its origin through every system that touches it
Impact Analysis See what breaks before you change a table Root Cause Trace a broken dashboard back to its source Trust Understand the full chain behind a metric Compliance Trace PII from origin through every system

Finding the Lineage View in the UI

  • Navigate to any dataset or dashboard entity page
  • Click the Lineage tab (next to Summary, Columns, etc.)
  • Default view: table-level lineage graph
  • Center node = the entity you opened
  • Left side = upstream (ancestors)
  • Right side = downstream (consumers)
  • Click Expand on any node to reveal its upstream/downstream connections
Brief: Screenshot of a dataset entity page in the DataHub sandbox with the Lineage tab selected, showing the tab bar (Summary, Columns, Lineage, ...) and the default table-level lineage graph with the opened entity as the center node.

Anatomy of the Lineage Graph

  • Nodes show the entity type via an icon in the top-left corner of each card (Snowflake logo = Snowflake dataset, dbt logo = dbt model, etc.)
  • Arrows show direction of data flow -- follow the arrow to go downstream
  • Expand button on any node reveals the next hop in either direction
  • Double-click any node to navigate to that entity's own lineage view (opens a new center)
  • Scroll and zoom to navigate large graphs
Brief: Screenshot of a populated lineage graph in the DataHub sandbox showing at least one Snowflake dataset node, one dbt model node, and one pipeline (Airflow) node connected by directional arrows, with the Expand button visible on one node.

Two Levels of Lineage Detail

  • Table-level (default): stg_orders → fct_orders → rpt_revenue_weekly → Revenue Dashboard -- tells you which tables and entities are in the chain
  • Column-level: stg_orders.amount → fct_orders.gross_revenue → rpt_revenue_weekly.total_revenue → Revenue Dashboard.Total Revenue -- tells you exactly which columns carry data through each hop
  • Toggle: use the "Column Lineage" toggle on the Lineage tab
Brief: Screenshot, before/after comparison of the Lineage tab for the same chain -- table-level graph on one side, column-level graph with column names shown on each node on the other -- with the "Column Lineage" toggle visible.

Understand the Transformation Chain Before You Use a Dataset

  • Open the Lineage tab
  • Read the upstream chain -- what raw sources did this come from?
  • Check whether any hops go through aggregations, filters, or joins
  • If the chain includes a pipeline or dbt model, open it to see the transformation logic
  • Look for gaps in lineage -- they mean that part of the chain was not captured
Brief: Screenshot of the Lineage tab for a dataset showing an upstream chain that passes through a dbt model node, with that node clicked/highlighted to illustrate "open it to see the transformation logic."

Debugging a Broken Metric: Work Backwards Through Lineage

  • Start at the broken entity (dashboard or report)
  • Open Lineage → navigate upstream (left)
  • At each hop, ask: "Could the error have been introduced here?"
  • Check for: recent ingestion failures, schema changes, upstream source issues
  • The break is almost always in one specific hop -- find it
Raw Source stg_orders fct_revenue_ daily rpt_revenue_ weekly Dashboard

A Lineage Gap Means "Not Tracked," Not "No Upstream"

  • Lineage in DataHub reflects what was captured by ingestion
  • A gap (no upstream nodes visible) means that transformation was not tracked by an integrated source
  • It does NOT mean the table has no upstream -- it means the upstream was not ingested
  • Common causes: manual SQL, a tool not yet integrated with DataHub, a pipeline run before DataHub was deployed
  • Never assume "no lineage = raw source"
Brief: Screenshot of a dataset's Lineage tab with an empty upstream (left) side and a populated downstream (right) side, showing what a lineage gap looks like in the UI.

Use Downstream Lineage Before Deprecating or Changing a Table

  • Open the entity page and click the Lineage tab
  • Navigate right (downstream) -- see everything that depends on this table
  • Note all downstream dashboards, reports, and other tables
  • Notify the owners of those assets before making the change
  • For a deprecation: add a description pointing to the replacement first
Brief: Screenshot of a table's Lineage tab with the downstream (right) side expanded, showing multiple dashboard and dataset nodes depending on the opened table.

Trace a Broken Dashboard Metric

  • Scenario: the "Weekly Revenue Summary" dashboard is showing wrong numbers this week. The metric comes from the fct_revenue_daily table.
  • Open fct_revenue_daily in the DataHub sandbox
  • Use the Lineage tab to trace upstream dependencies
  • Navigate as far upstream as the lineage allows
  • Identify the most likely point of failure (the specific table or pipeline hop)
Brief: Screenshot of the fct_revenue_daily dataset page in the DataHub sandbox with the Lineage tab open, as the starting screen participants land on for the lab.

Check for Understanding

  • You open the Lineage tab on a dataset and the upstream side is completely empty. What does that tell you?
  • You are about to rename a column in a heavily used table. What should you do in DataHub before making the change?
  • A dashboard is showing the wrong number. You have traced upstream from the dashboard and found: Dashboard ← rpt_revenue_weekly ← fct_revenue_daily. The fct_revenue_daily table was last updated 3 days ago but the pipeline normally runs daily. What do you suspect?
Empty upstream: what does it mean? Before renaming a column, check what? Table stale 3 days -- first suspect?

Summary: Lineage

  • DataHub tracks end-to-end lineage across datasets, dashboards, jobs, and pipelines
  • Column-level lineage maps which upstream columns feed each downstream field
  • Lineage is captured automatically during ingestion -- no manual tracking required
  • Impact Analysis: before changing any asset, check downstream dependents on the Lineage tab
  • Lineage reflects the last ingestion run, not real-time data movement
  • Next: Metadata in Practice
End-to-end lineage across datasets, jobs, dashboards Column-level lineage maps field-to-field flow Captured automatically during ingestion Check downstream impact before any change Reflects the last ingestion run, not real-time Next: Metadata in Practice