Edges: "table B was produced from table A" -- the direction of data flow
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
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?"
The break is almost always in one specific hop -- find it
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?
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