Record the dependencies a run actually creates
Distinguish jobs, executions, datasets, columns, and indirect influences without treating a lineage diagram as complete proof.
On this page
The question for today
What you’ll understand
- Identify job definitions, run identities, and versioned input/output artifacts.
- Separate direct column transformation from selection and join influences.
- Evaluate lineage precision and capture scope before tracing affected training artifacts.
A model's embedding table is wrong, and a lineage graph points to every dataset read by a large daily job. That may be too broad to diagnose the problem and too incomplete to establish what else is affected. Useful lineage records which execution used which artifact versions and how particular outputs depend on inputs. It must also distinguish declared dependencies from observed ones. The graph helps investigate and govern a pipeline only when the meaning and coverage of each edge are known.
Separate a job from one execution and its artifacts
A job identifies a recurring computation or definition; a run identifies one execution of it. The same job can read different snapshots, execute different code versions, and produce different outputs on different days. Record those versions and the run's state instead of attaching one timeless edge to a mutable dataset name. OpenLineage models jobs, runs, and datasets with namespaced identities and extensible facets. A dataset reference alone does not necessarily pin its contents, so include the available snapshot, object version, or manifest identity required to reconstruct this particular execution.
Provenance also asks who or what was responsible for an artifact and activity. W3C PROV distinguishes entities, activities, and agents, supporting descriptions of derivation without implying that every input used by an activity contributed to every entity it generated. A computation may read a configuration for an unrelated diagnostic output while independently producing an embedding table. Turning every input and output into a Cartesian product of edges invents dependencies. Conversely, a dynamic lookup or external preprocessing service may be absent from static SQL analysis. Identify the capture mechanism and label declared plans, observed runs, and inferred relationships so users can assess which question each record answers.
A column can influence values or which rows exist
Direct column lineage may say that a normalized feature is computed from a raw score using a specific transformation. Indirect influences include filters, joins, grouping, ordering, and conditional expressions that change which rows or values contribute. A permission flag used only in a WHERE condition can determine the training cohort even when it is not copied into the output. Omitting that edge makes it harder to audit the use boundary. Record the transformation category and scope that your lineage collector actually supports, and inspect how it handles aliases, user-defined functions, nested fields, and generated code.
Column lineage is not automatically a proof that a training example was eligible or a model was unaffected by a source defect. The captured run might not match the version used for training; the filter may have been coded incorrectly; the graph may omit side inputs. Keep code identity, policy version, dataset version, and run evidence connected. When a source field changes classification or is corrected, traverse verified dependencies to find candidate affected outputs, then validate actual membership and transformations. Over-approximated edges can support conservative investigation, but their false positives and missing coverage must remain visible.
Test the collector as part of the pipeline
Create small workloads whose dependencies are known: independent outputs, joins, filtered cohorts, renamed columns, and one dynamic side input. Check the collector's graph against these cases and retain its version and configuration. Capture loss, failed export, or unsupported operations should yield explicit uncertainty rather than an empty graph interpreted as no dependencies. A completed job event also does not prove that every output was atomically committed or that its consumer read that exact version. Link artifact publication and training execution records so the lineage can answer a concrete reconstruction question.
The probability lab provides a limited model of capture completeness. Reset, set both p=0.9 and n=10, predict the probability that every known edge is captured, then inspect the bar at ten successes. It is 0.9 raised to the tenth, about 34.9%, under independent equal capture probability. The lab neither extracts dependencies nor measures collector accuracy. Correlated unsupported operations can make the independence assumption especially poor. Use the calculation to challenge the idea that a high per-edge success rate automatically establishes a complete run graph, then return to deterministic known-case tests and actual export evidence.
Work it through
Avoid inventing dependencies between independent outputs
A known job reads text, tokenizer configuration, and label-audit data. It independently writes embeddings from text plus tokenizer configuration, and an audit report from label-audit data. Assume these are the only three true dataset edges.
Three inputs and two outputs give six input-output pairs if the collector inserts every Cartesian-product edge.
Only three pairs are actual dependencies under the supplied execution: text→embeddings, tokenizer→embeddings, and label-audit→audit report. The other three recorded pairs are false edges.
The all-pairs graph has edge precision 3/6=50% and captures all three reference edges. A more precise graph records the three actual pairs while preserving the evidence that their independence was established.
An input list is useful context, but it does not by itself prove that every input influenced every output. Capture the edge semantics required by the investigation.
The living notebook
Explore the model
Interactive lab · probability
High per-edge capture is not complete-run proof
Reset, set both success probability p=0.9 and trials n=10, predict the ten-successes bar, then inspect. It is approximately 0.3487. This exact binomial model assumes independent equal-probability capture of ten known edges; it does not extract a lineage graph.
- Mean · np
- 5
- Variance · np(1−p)
- 2.5
- Total probability
- 1
These are exact binomial probabilities for independent trials with one fixed success probability. Playback tours the distribution; it does not resample outcomes. Parameter changes pause playback and recompute the model at the current elapsed time. Reset restores both parameters and returns time to zero. Playback starts paused. Adjust either parameter, then choose Play or Step.
Look forMissing one edge can matter to an affected-artifact query. Known-case collector tests, export health, and versioned run evidence are needed beyond a hypothetical per-edge capture probability.
Pause & reason
Check your understanding
Your turn
Try it yourself
A recorded graph has 12 edges for one execution. A trusted reference has 10 true edges;9 appear in the recorded graph. Compute edge precision and recall, and identify what the missing edge can undermine.
Take a moment to make a prediction or work it out on paper. Open a hint when you need one.
Give me a hint
Use 9 recorded true positives with the recorded and reference denominators separately.
Compare with the solution
Precision is 9/12=75% and recall is 9/10=90%. The missing true edge can hide an affected output or omitted use boundary. These metrics require the trusted reference and matching edge definitions; the graph cannot certify its own completeness.
Keep the idea
Take it with you
- Lineage needs distinct job, run, artifact-version, and responsibility identities.
- Column values and row-selection conditions create different kinds of influence.
- Recorded edges support investigation only within their demonstrated precision and coverage.
Read further
Original sources and deeper explanations to follow at your own pace.
Optional progress, saved in this browser when available. Revisit any lesson at any time.
Lesson not marked complete.