A record of data origin and transformations
Data lineage is the traceable path of data from where it originates, through every transformation, to where it gets used. It is read in two directions: forward, to see what a change will break, and backward, to find where a wrong number went bad.
A revenue figure on an executive dashboardDashboardData & AnalyticsAn analytics dashboardView reference → reads 12 percent low one morning. With table-level lineage, an analyst learns that five tables feed the dashboard and has to inspect each. With column-level lineage, the trace is sharper: the net_revenue field depends on fx_rate from one upstream table, and that table's last load failed silently overnight. The root causeRoot CauseEngineeringAn identified root cause of an issueView reference → is found in minutes instead of an afternoon. The same map run forwards answers the other question: if someone drops fx_rate, which downstream models and dashboards go dark?
Zagni's treatment of dbt shows this forward-trace capabilityCapabilityStrategyAn ability that enables value deliveryView reference → made operational: dbt represents each SQL model as a node in a directed acyclic graph, built automatically from `ref()` and `source()` macro calls, so the tool knows at execution time which downstream models to rebuild or retest when an upstream model changes. The column-level example above is the everyday version of what that DAG encodes.
The lineage obligation in analytical systems has a long pedigree. Kimball and Ross's dimensional modeling methodology — fact tables joined to conformed dimensions shared across subject areas — creates precisely the cross-source dependenciesDependencyTeam & OrganisationA cross-team or system dependencyView reference → that lineage must track: when a conformed dimension (say, a customer record) is updated, every fact table that references it is affected. Their ETL design chapters treat knowing which source system fed which dimension attribute as a prerequisite to any trustworthy load, which is an early formal statement of the lineage principle the body opens with.
In the Unified Product Graph, data lineage sits in the data and analytics region and ties tightly to Data SourceData & AnalyticsA data source or integrationView reference →. A source is traced via lineage (data_sourceData Sourcetraced viaData Lineagehierarchy), and lineage both draws from a source (data_source_traced_via_data_lineageData Lineagesourced fromData Sourcecross-domain) and feeds into one (data_lineage_sourced_from_data_sourceData LineagefeedsData Sourcecross-domain). Those two directional edges are the point: lineage is inherently a path with an upstream and a downstream, so the graph models it as a directed connection between sources rather than a flat label, which is what lets you walk it for impact analysis.data_lineage_feeds_data_source
Worked example: Trellis
Every record in Trellis carries its lineage: which agent change created or modified it, when, and under whose approval. That provenance is what makes the Safe Change featureFeatureProduct SpecificationA product capability or featureView reference → genuinely reversible rather than just undoable, and it is what Sam can inspect in the audit log to verify the agent only touched what it was scoped to touch.
Type-specific fields on BaseNode
transformationstringDescription of how the data is transformed
idstringrequiredUnique identifier (UUID)
typeNodeTyperequiredDiscriminator for the entity type
titlestringrequiredDisplay name
descriptionstringOptional detailed description
statusstringLifecycle status
tagsstring[]Freeform tags for filtering
3 edge types connected to this entity.
data_source_traced_via_data_lineagedata_lineage_sourced_from_data_sourcedata_lineage_feeds_data_source