> ## Documentation Index
> Fetch the complete documentation index at: https://docs.paradime.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Column-Level Lineage Diff

> Column-Level Lineage Diff shows the exact upstream and downstream columns impacted by a dbt™ pull request, so reviewers can approve changes confidently.

export const Arcade = ({src, title}) => <div style={{
  position: 'relative',
  paddingBottom: 'calc(56.2225% + 41px)',
  height: 0,
  width: '100%'
}}>
    <iframe src={src} title={title} frameBorder="0" loading="lazy" allow="clipboard-write" allowFullScreen style={{
  position: 'absolute',
  top: 0,
  left: 0,
  width: '100%',
  height: '100%',
  colorScheme: 'light'
}} />
  </div>;

**Overview**

The Column-Level Lineage Diff Analysis feature in Paradime enables users to understand the blast radius of their changes directly within pull requests (PRs). By leveraging field-level lineage, this CI check identifies changes to columns in your dbt™ models and creates a report for all impacted downstream objects. This includes renaming or removing columns and changes to the underlying logic of columns in your dbt™ models.

When a PR is opened in GitHub, an automated comment is generated listing all downstream nodes. This allows users to understand the changes introduced at a column level and assess the potential impact on downstream dbt™ models, BI dashboards, and other downstream elements.

## Key features

* **Field-Level Lineage**: Identify changes to columns in your dbt™ models and generate a detailed report of all impacted downstream objects.
* **Automated Comments**: Receive automated comments in your PRs listing all downstream dbt™ models and BI nodes affected by the changes.
* **Impact Assessment**: Understand what nodes and other elements might be impacted by the changes introduced in the PR.

## Use cases

* Assess all downstream nodes impacted by changes both within a dbt project and in downstream application (example: BI)
* For Data Mesh architectures, see how your current project's changes impact other project changes.

## Tutorial

<Arcade src="https://demo.arcade.software/QzlG3xuzUh52aZQZDTQy?embed&embed_mobile=tab&embed_desktop=inline&show_copy_link=true" title="Column-Level Lineage Diff" />

## Prerequisites

To use the Column-Level Lineage Diff Analysis features, ensure the following prerequisites are met:

1. **Git Integration**: Install the Paradime GitHub app and authorize access to the dbt™ repository used in Paradime or use alternative methods based on your Git Provider. See setup instructions.
2. **Production Connection**: Add a production connection with access to your sources and models generated when running production jobs. This allows Paradime to run information schema queries and build field-level lineage. See [connection guide](/products/settings/connections/scheduler-environment/index) for instructions based on your data warehouse provider.
3. **Have at least one Bolt TurboCI configured**. This is required to generate field-level lineage for your dbt™ project. See [Bolt Scheduler](/products/bolt/creating-schedules/deploy) for configuration.

<Info>
  To get the most value out of Lineage Diff Analysis, connect your BI tools ([Tableau](/integrations/tableau), [Thoughtspot](/integrations/thoughtspot), [Looker](/integrations/looker), etc.) to see all downstream nodes impacted.
</Info>

## Set up your Git provider

<CardGroup cols={2}>
  <Card title="GitHub" href="/products/bolt/ci-cd/lineage-diff/github" horizontal />

  <Card title="GitLab" href="/products/bolt/ci-cd/lineage-diff/gitlab" horizontal />

  <Card title="Azure DevOps" href="/products/bolt/ci-cd/lineage-diff/azure-devops" horizontal />

  <Card title="BitBucket" href="/products/bolt/ci-cd/lineage-diff/bitbucket" horizontal />
</CardGroup>

## Lineage Diff Feature - Supported Use Cases

The lineage diff feature analyzes changes in dbt models to track structural modifications that affect downstream dependencies.

The lineage diff feature focuses on **structural changes to SELECT statements** that affect the schema and column availability for downstream models. It does not track logic changes, data transformations, or modifications to non-SELECT clauses.

**Supported Changes**

**SQL Structural Changes**

The lineage diff feature detects and tracks the following structural modifications:

* **Column renaming**: When a column is renamed in a SELECT statement
* **Column removal**: When a column is removed from a SELECT statement
* **Column addition**: When a new column is added to a SELECT statement

**Example - Supported Changes**

```sql theme={"system"}
-- Before
SELECT
    customer_id,
    customer_name,
    email
FROM customers

-- After (column renamed)
SELECT
    customer_id,
    full_name,  -- renamed from customer_name
    email
FROM customers
```

**Non-Supported Changes**

**Structural Changes to Non-SELECT Statements**

* **WHERE clause modifications**: Changes to filtering conditions
* **JOIN modifications**: Adding, removing, or changing JOIN conditions
* **GROUP BY changes**: Modifications to grouping logic
* **ORDER BY changes**: Changes to sorting logic

**Structural Changes Used in Non-SELECT Contexts**

Even if a change is structural (like renaming a column), the lineage diff feature does not track usage in:

* **WHERE clauses**: Column references in filtering conditions
* **JOIN conditions**: Column references in table joins
* **GROUP BY clauses**: Column references in grouping logic
* **ORDER BY clauses**: Column references in sorting logic

**Data Changes**

* **Column calculation changes**: Modifications to how a column value is computed
* **NULL handling changes**: Changes in NULL value treatment
* **Data type transformations**: Changes that affect data representation but not structure

**Example - Non-Supported Changes**

```sql theme={"system"}
-- Before
SELECT
    customer_id,
    customer_name,
    revenue * 1.1 as adjusted_revenue
FROM customers
WHERE status = 'active'
ORDER BY customer_name

-- After (non-supported changes)
SELECT
    customer_id,
    customer_name,
    revenue * 1.2 as adjusted_revenue  -- calculation change (not detected)
FROM customers
WHERE status IN ('active', 'pending')  -- WHERE clause change (not detected)
ORDER BY full_name  -- ORDER BY with renamed column (not detected)
```

**Note**: Even though `customer_name` was structurally renamed to `full_name`, the lineage diff feature only tracks this change in the SELECT statement itself, not its usage in the ORDER BY clause.

## Summary

Column-Level Lineage Diff helps you review downstream impact before merge. It detects structural column changes in `SELECT` statements, then reports affected dbt™ models and connected BI assets in your PR.

It is best for column additions, removals, and renames. It does not track logic changes in `WHERE`, `JOIN`, `GROUP BY`, `ORDER BY`, or column calculations.

## Next steps

1. Connect your Git provider so Paradime can post PR comments.
2. Add a production connection and confirm at least one Bolt schedule runs.
3. Connect BI tools like Looker, Tableau, or ThoughtSpot for wider impact coverage.
4. Open a test PR with a column change and review the generated lineage report.


## Related topics

- [Lineage Diff](/developers/python-sdk/modules/lineage-diff.md)
- [Column-Level Lineage Diff for Looker](/products/bolt/ci-cd/lineage-diff/looker.md)
- [Column-Level Lineage Diff on GitHub](/products/bolt/ci-cd/lineage-diff/github.md)
- [Column-Level Lineage Diff on GitLab](/products/bolt/ci-cd/lineage-diff/gitlab.md)
- [Column-Level Lineage Diff on BitBucket](/products/bolt/ci-cd/lineage-diff/bitbucket.md)
