# Data Lineage

> Tracks data flow from source to destination through transformations and dependencies.

- **Category**: Data Science
- **Subcategory**: Governance
- **Canonical URL**: https://designpattern.fyi/patterns/data-lineage/

---

## Description
**Context**: Understanding where data comes from, how it transforms, and its impact is critical for debugging, compliance, and trust. Data lineage provides this visibility.


## Use Cases
Regulatory compliance, impact analysis, debugging data issues, and understanding data transformation logic.



## Implementation Example

```python
# Data Lineage Pattern class DataLineageTracker: def __init__(self): self.lineage_graph = {}
def add_transformation(self, source, transformation, target): if target not in self.lineage_graph: self.lineage_graph[target] = []
self.lineage_graph[target].append({ "source": source, "transformation": transformation })
def trace_backwards(self, target): # Trace data origins origins = [] to_visit = [target]
while to_visit: current = to_visit.pop() if current in self.lineage_graph: for dependency in self.lineage_graph[current]: origins.append(dependency["source"]) to_visit.append(dependency["source"])
return origins
```



## Trade-offs


### Advantages

- - Impact analysis

- - Compliance support

- - Debugging assistance

- - Trust building




### Considerations & Drawbacks

- - Implementation complexity

- - Maintenance overhead

- - Tool dependency

- - Documentation burden







---
**Reference**: [Original Source](https://www.collibra.com/blog/what-is-data-lineage/)

