Data Lineage
Data lineage tracks how data moves and transforms from its sources through pipelines and models to its final consumption points. It answers where a metric came from, what transformations shaped it, and what would be affected if an upstream source changed.
itData engineering and analytics | OpenSkills.info
Course pathWalk it in order
Look it upDip in anytime
Go furtherLeaves this page
Don't Panic
Don't Panic — Data Lineage
Data lineage is the record of how data moves and changes from a source to a destination. It exists because a dashboard number can have a surprisingly long family history: source datasets, transformation jobs, output datasets, metrics, and consumers. Without lineage, answering "where did that come from?" means walking through code, jobs, logs, and records one anxious clue at a time.
The useful picture is a graph, but the important part is the evidence behind it. Nodes name datasets, jobs, runs, and related things. Directed edges say what depended on what. Evidence adds the run, time, version, code, and owner that make an edge worth believing. A decorative graph is very good at decorating. It is less reliable at explaining a changed dashboard.
Two directions hold most of the subject together. Go upstream from an output toward its inputs and origins when an unexpected result needs tracing. Go downstream from an input toward derived assets and consumers before a change. The first route looks for the first unexpected state. The second finds who else may inherit it. Neither route proves correctness; logs, tests, source records, and domain knowledge still get the final vote.
The surprise is that names are part of the engineering. A dataset and a job need stable identities, commonly a namespace plus a name. Name the same asset differently and the graph splits it in two. Reuse one name for different assets and the graph invents a relationship. The chart has no way to feel embarrassed about either mistake.
The other surprise is that column-level lineage is not merely dataset lineage with smaller boxes. It can distinguish a copied field from a transformed or aggregated one, and it can record indirect influence through joins, filters, groups, sorts, windows, and conditions. That precision costs more to collect. Dynamic SQL, opaque services, and procedural code can keep part of the route offstage.
Start with the Intro for the full map: provenance concepts, capture sources, and the limits of the graph. Use the Slides for the relationships between dataset, job, run, and the two traversal directions. Keep the Cheatsheet nearby when scoping an incident trace or change review. The Field Notes are for the costly parts people discover after a graph has already become trusted. Then take one known workflow, define its identities, and test whether its path is actually present.
Where this skill leads
Relevant careers
See how this topic contributes to broader role-level skill maps.
Sources
- https://www.w3.org/TR/prov-overview/
Supports
- Provenance as information about entities, activities, and people involved in producing a thing
- Provenance use in assessments of quality, reliability, and trustworthiness
- Interoperable interchange of provenance across heterogeneous systems
- The structure and intended audiences of the W3C PROV family
- https://www.w3.org/TR/prov-primer/
Supports
- Intuitive definitions and examples for entities, activities, agents, usage, generation, derivation, roles, and time
- Provenance uses including understanding collection, judging trust, checking process requirements, and reproduction
- Activities using existing entities and generating new entities
- Agents and responsibility for activities or entities
- https://www.w3.org/TR/prov-o/
Supports
- Normative starting-point definitions for entity, activity, and agent
- Relations for usage, generation, derivation, association, and attribution
- Provenance chains connecting activities, entities, and responsible agents
- https://openlineage.io/
Supports
- OpenLineage as an open framework for lineage metadata collection and analysis
- Datasets, jobs, and runs as tracked metadata objects
- A standard event API and integrations for pipeline components
- Root-cause and impact questions as uses of collected lineage metadata
- https://openlineage.io/docs/spec/naming/
Supports
- Dataset and job identity through a namespace and name
- Runs as executions identified by run identifiers
- Consistent naming as necessary to connect lineage nodes over time
- A job as recurring processing with inputs and outputs
- https://openlineage.io/docs/spec/facets/
Supports
- Facets as atomic metadata attached to runs, jobs, and datasets
- Event context divided among job, run, input, and output facets
- Schema-based extension through standard and custom facets
- https://openlineage.io/docs/spec/facets/job-facets/
Supports
- A job as an abstract process that consumes and produces datasets
- Job identity by unique name within a namespace
- Job evolution captured during runs
- https://openlineage.io/docs/spec/facets/dataset-facets/column_lineage_facet/
Supports
- Column-level dependencies from input fields to output fields
- Direct relationships for identity, transformation, and aggregation
- Indirect relationships for joins, groups, filters, sorts, windows, and conditions
- Field-level impact questions and masking metadata
- https://openlineage.io/apidocs/openapi/
Supports
- Run, dataset, and job event request shapes
- Event time, producer, and schema reference requirements
- Run lifecycle states including start, running, complete, abort, fail, and other
- Input and output datasets attached to run events
- https://openlineage.io/docs/integrations/about/
Supports
- Different integrations collecting different facets and metadata
- The need for custom integrations where existing integrations do not cover a system
- Integration libraries as a path for additional metadata collection
- https://atlas.apache.org/api/v2/resource_LineageREST.html
Supports
- Lineage retrieval for an identified entity
- Input, output, or both traversal directions
- Bounded traversal through a depth parameter
- https://docs.datahub.com/docs/features/feature-guides/lineage/
Supports
- DataHub lineage features and APIs for browsing and managing relationships between data assets
- https://docs.open-metadata.org/v1.12.x/api-reference/lineage
Supports
- OpenMetadata lineage API support for directional, depth-bounded entity graphs with column mappings and pipeline references
- https://docs.atlan.com/product/capabilities/lineage/concepts/what-is-lineage
Supports
- Atlan lineage collection from SQL parsing, API crawling, and API ingestion across data assets and processes
- https://learn.microsoft.com/en-us/purview/data-gov-classic-lineage-user-guide
Supports
- Microsoft Purview lineage stitching across processing, storage, analytics, and reporting systems and its documented capture limits
- https://openlineage.io/docs/next/spec/facets/job-facets/lineage/
Supports
- OpenLineage Lineage Job Facet records explicit target-to-source edges and avoids false Cartesian-product inference from event input and output arrays
- https://docs.databricks.com/aws/en/data-governance/unity-catalog/data-lineage
Supports
- Unity Catalog lineage collection, access controls, supported external assets, and documented capture limitations
