asset

Column-level lineage of a set of dbt relations

Changed on

The direct (copy / mod) column-to-column lineage the given relations' columns sit in — the connected component around them, from the engine's static analysis. Not their own edges, which would stop one hop out since a column trace walks transitively, and not a whole project's, which carries model families the selection cannot reach. Several relations, answered as one union, because one selection reaches several: a script's output column can derive from columns of several dbt models. Unpinned, the component crosses projects — a relation one project produces is another's source — and the caller's access is decided again for every project it reaches, so a trace ends where their grants do. A pinned answer, by version here or by job on the run route, is one project's. Its own endpoint rather than a field on the asset graph: the graph is folder-wide and polled by a run page, while this is rendered for one selection at a time. Empty for projects that did not opt into the analysis pass (column_lineage: true), which is the ordinary case. The indirect scan kind is stored but never served: it reaches every output column of its model.

get/w/{workspace}/assets/column_lineage

Request

  • Base URL
    /api (relative, and the document was published on a file host, not at the API’s origin)
  • URL
    /api/w/{workspace}/assets/column_lineage
  • Auth
    • HTTP bearer
    • or API key in cookie token

Path parameters

workspacestring required

Query parameters

asset_pathstring[] required

The dbt:// relations whose lineage to return. Repeated, once per relation, and answered as one union. At least one, and at most 1000 — a request naming none, or more than that, is refused rather than answered with an empty component.

dbt_script_hashstring

The deployed version a view is drawing, when it is drawing one — the dbt editor, which shows a single project as of a single deploy. A version-pinned answer is that version's project alone, the same as a job-pinned one, and only the unpinned answer crosses projects: a pin says which stored graph is on screen, and another project's live graph is not part of it. A run's or an editor buffer's own graph is not reachable here: that pins to a job, and costs the job-read gate — see jobs/dbt_column_lineage/{id}.

Response

the relations' column-level lineage

truncatedboolean required

The component reaches further than edges, which holds the part nearest the asked-for relations. A trace that stops short is otherwise indistinguishable from one that ends.

Changes