How do I see what breaks before I change a column on Databricks?
Bruin parses the SQL in each Databricks 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 lineageDefined in
SQL + YAML
Works with
Databricks + Bruin CLI
What you get
How to do it
- 1
Point Bruin at your Databricks project so it can parse every asset.
- 2
Run bruin lineage ./pipeline --asset <name> to see the graph for one asset.
- 3
Add descriptions to the columns people actually ask about, in the asset definition.
- 4
Run bruin validate to confirm every reference resolves.
- 5
Add bruin validate to CI so a breaking change fails in the pull request.
- 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.ordersRun bruin lineage and Bruin prints the column graph across your Databricks assets.
Worth knowing
Bruin only sees assets inside a Bruin pipeline. A Looker explore, a notebook, or a legacy job touching Databricks 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.
| Option | When it is the better choice |
|---|---|
| Bruin | Use column-level lineage parsed from your Databricks pipeline SQL, available before a change merges rather than after it runs. |
| OpenMetadata | Open-source catalog with column-level lineage across many tools, not just Databricks assets you define in one framework. Heavier to operate. |
| Atlan | The strongest commercial catalog for organisation-wide governance with business stakeholders, glossary, and stewardship workflow. A different product category to a CI gate. |
| dbt | Free 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 Databricks?
Bruin parses the SQL in your Databricks 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 Databricks 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 Databricks?
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.
Related use cases
See downstream impact of a schema change on Snowflake
How do I see what breaks before I change a column on Snowflake?
Impact analysis by warehouseSee downstream impact of a schema change on BigQuery
How do I see what breaks before I change a column on BigQuery?
Impact analysis by warehouseSee downstream impact of a schema change on Postgres
How do I see what breaks before I change a column on Postgres?
Know what breaks before you ship it
Open source. Column-level lineage parsed from your SQL, with no manual mapping.