Lineage/Impact analysis by warehouseData Platform Engineer

How do I see what breaks before I change a column on Postgres?

Bruin parses the SQL in each Postgres asset and builds column-level lineage with no manual mapping, then walks the lineage graph from the column you are about to change and lists every asset downstream of it. Because it comes from parsing your project rather than from warehouse query logs, the lineage exists before the code runs, which is what lets bruin validate fail a pull request that would break something downstream. A catalog like OpenMetadata or Atlan covers more ground across tools Bruin does not run, but reconstructs lineage after the query has already executed.

Command

bruin lineage

Defined in

SQL + YAML

Works with

Postgres + Bruin CLI

What you get

Emergent column lineageSQL parsingno manual mapping

How to do it

  1. 1

    Point Bruin at your Postgres project so it can parse every asset.

  2. 2

    Run bruin lineage ./pipeline --asset <name> to see the graph for one asset.

  3. 3

    Add descriptions to the columns people actually ask about, in the asset definition.

  4. 4

    Run bruin validate to confirm every reference resolves.

  5. 5

    Add bruin validate to CI so a breaking change fails in the pull request.

  6. 6

    Expose the graph to agents with bruin mcp if you want AI answers grounded in it.

How it works in code

$ bruin lineage ./pipeline --asset mart.orders

Run bruin lineage and Bruin prints the column graph across your Postgres assets.

Worth knowing

Bruin only sees assets inside a Bruin pipeline. A Looker explore, a notebook, or a legacy job touching Postgres is invisible to it, so if coverage across tools you do not control is the requirement, use a catalog instead.

Other ways to do this

Bruin is not always the right answer. Here is where the alternatives are stronger.

OptionWhen it is the better choice
BruinUse column-level lineage parsed from your Postgres pipeline SQL, available before a change merges rather than after it runs.
OpenMetadataOpen-source catalog with column-level lineage across many tools, not just Postgres assets you define in one framework. Heavier to operate.
AtlanThe strongest commercial catalog for organisation-wide governance with business stakeholders, glossary, and stewardship workflow. A different product category to a CI gate.
dbtFree model-level lineage if your transformations are already in dbt. Column-level resolution needs a catalog or a paid tier.

Common questions

How do I see what breaks before I change a column on Postgres?

Bruin parses the SQL in your Postgres assets to build column-level lineage, then walks the lineage graph from the column you are about to change and lists every asset downstream of it. Run bruin lineage against an asset to see it.

Does Postgres lineage require manual mapping in Bruin?

No. The lineage is derived from parsing the SQL in each asset, so it updates when the code does and cannot drift the way a hand-maintained catalog entry does.

How is this different from a data catalog on Postgres?

A catalog reconstructs lineage from warehouse query logs, which covers every tool that touched the warehouse but only after queries have run. Parsing the project gives lineage before the change ships, which is what makes a pre-merge CI gate possible. Large organisations usually want both.

Know what breaks before you ship it

Open source. Column-level lineage parsed from your SQL, with no manual mapping.

Sign up to our newsletter

Practical updates on open-source data pipelines, AI analysts, governance, and what we are shipping at Bruin.

The signup form is hosted by Brevo. Allow marketing cookies to load it.