Lineage impact analysis
Use Lakehouse to understand the downstream impact of changes to tables, columns, or models before you deploy them to production.
These queries use the ASSETS table from the GOLD namespace in the Lakehouse catalog and the LINEAGE table, which you create separately in your warehouse (see Set up lineage tables).
Before you begin
Before you run these queries, make sure:
- Your Lakehouse setup is complete and Lakehouse is enabled for your organization. If setup isn't complete, see Get started with Lakehouse.
- The
LINEAGEtable is set up in your warehouse. This table is not part of the native GOLD namespace and must be created separately. See Set up lineage tables.
You can run these queries directly on your lineage tables to understand and communicate the impact of upstream changes before you modify schemas, deprecate assets, or migrate data.
Impact analysis
List all assets that depend on a given source table, view, or model so teams can plan migrations, coordinate with owners, and avoid breaking downstream workloads.
Before making changes to a data asset, use impact analysis to list downstream consumers and plan updates with owners. Common scenarios include renaming columns used by dashboards, deprecating legacy tables, changing data types, migrating tables to new schemas, implementing row-level security, or upgrading dbt models with downstream dependencies.
- Snowflake
- Databricks
- BigQuery
-- ============================================
-- IMPACT ANALYSIS: Find All Downstream Dependencies Before Making Changes
-- gold.assets: Lakehouse catalog (GOLD namespace)
-- LINEAGE: Customer-managed table (see "Set up lineage tables")
-- ============================================
SELECT
a.asset_name AS SOURCE_ASSET, -- Asset you're planning to change
a.asset_type AS SOURCE_TYPE, -- Type of source asset (Table, Column, etc.)
a.asset_qualified_name AS SOURCE_PATH, -- Full path to source asset
a.certificate_status AS SOURCE_CERT, -- Source certification status
TO_TIMESTAMP_LTZ(a.updated_at / 1000) AS SOURCE_LAST_UPDATED, -- When source was last updated
l.related_name AS IMPACTED_ASSET, -- Name of downstream asset that will be affected
l.related_type AS IMPACTED_TYPE, -- Type of impacted asset (Dashboard, View, etc.)
l.level AS DEPENDENCY_DEPTH, -- How many hops downstream (1=direct, 2=2-hops, etc.)
-- Get impacted asset details for stakeholder notification
ra.asset_qualified_name AS IMPACTED_PATH, -- Full path to impacted asset
ra.owner_users AS IMPACTED_OWNERS, -- Who to notify about the change
ra.connector_name AS IMPACTED_SYSTEM, -- Which system the impacted asset is in
ra.certificate_status AS IMPACTED_CERT_STATUS, -- Business criticality indicator
TO_TIMESTAMP_LTZ(ra.updated_at / 1000) AS IMPACTED_LAST_UPDATED, -- When impacted asset was last updated
-- Create notification priority based on dependency depth
CASE
WHEN l.level = 1 THEN 'DIRECT DEPENDENCY - HIGH PRIORITY'
WHEN l.level = 2 THEN 'SECONDARY DEPENDENCY - MEDIUM PRIORITY'
ELSE 'INDIRECT DEPENDENCY - LOW PRIORITY'
END AS NOTIFICATION_PRIORITY
FROM gold.assets a
INNER JOIN LINEAGE l
ON a.guid = l.start_guid -- Join on asset identifier
LEFT JOIN gold.assets ra
ON l.related_guid = ra.guid -- Get metadata for impacted assets
WHERE
-- START HERE: Asset you plan to change (use guid or QUALIFIED_NAME)
a.asset_qualified_name = 'default/snowflake/123/ANALYTICS/DIM_CUSTOMERS'
AND a.asset_type = 'Table'
-- Look DOWNSTREAM to find what depends on it
AND l.direction = 'DOWNSTREAM'
ORDER BY
l.level ASC, -- Show direct dependencies first (highest risk)
l.related_type, -- Group by type (Dashboards, Tables, etc.)
l.related_name; -- Alphabetically within each type
-- ============================================
-- IMPACT ANALYSIS: Find All Downstream Dependencies Before Making Changes
-- gold.assets: Lakehouse catalog (GOLD namespace)
-- LINEAGE: Customer-managed table (see "Set up lineage tables")
-- ============================================
SELECT
a.asset_name AS SOURCE_ASSET,
a.asset_type AS SOURCE_TYPE,
a.asset_qualified_name AS SOURCE_PATH,
a.certificate_status AS SOURCE_CERT,
l.related_name AS IMPACTED_ASSET,
l.related_type AS IMPACTED_TYPE,
l.level AS DEPENDENCY_DEPTH,
-- Get impacted asset details
ra.asset_qualified_name AS IMPACTED_PATH,
ra.owner_users AS IMPACTED_OWNERS,
ra.connector_name AS IMPACTED_SYSTEM,
ra.certificate_status AS IMPACTED_CERT_STATUS,
-- Create notification list
CASE
WHEN l.level = 1 THEN 'DIRECT DEPENDENCY - HIGH PRIORITY'
WHEN l.level = 2 THEN 'SECONDARY DEPENDENCY - MEDIUM PRIORITY'
ELSE 'INDIRECT DEPENDENCY - LOW PRIORITY'
END AS NOTIFICATION_PRIORITY
FROM gold.assets a
INNER JOIN LINEAGE l
ON a.guid = l.start_guid
LEFT JOIN gold.assets ra
ON l.related_guid = ra.guid
WHERE
-- Start here: asset you plan to change
a.asset_qualified_name = 'default/snowflake/123/ANALYTICS/DIM_CUSTOMERS'
AND a.asset_type = 'Table'
-- Look downstream to find what depends on it
AND l.direction = 'DOWNSTREAM'
ORDER BY
l.level ASC,
l.related_type,
l.related_name;
-- ============================================
-- IMPACT ANALYSIS: Find All Downstream Dependencies Before Making Changes
-- gold.assets: Lakehouse catalog (GOLD namespace)
-- LINEAGE: Customer-managed table (see "Set up lineage tables")
-- ============================================
SELECT
a.asset_name AS SOURCE_ASSET, -- Asset you're planning to change
a.asset_type AS SOURCE_TYPE, -- Type of source asset (Table, Column, etc.)
a.asset_qualified_name AS SOURCE_PATH, -- Full path to source asset
a.certificate_status AS SOURCE_CERT, -- Source certification status
TIMESTAMP_MILLIS(a.updated_at) AS SOURCE_LAST_UPDATED, -- When source was last updated
l.related_name AS IMPACTED_ASSET, -- Name of downstream asset that will be affected
l.related_type AS IMPACTED_TYPE, -- Type of impacted asset (Dashboard, View, etc.)
l.level AS DEPENDENCY_DEPTH, -- How many hops downstream (1=direct, 2=2-hops, etc.)
-- Get impacted asset details for stakeholder notification
ra.asset_qualified_name AS IMPACTED_PATH, -- Full path to impacted asset
ra.owner_users AS IMPACTED_OWNERS, -- Who to notify about the change
ra.connector_name AS IMPACTED_SYSTEM, -- Which system the impacted asset is in
ra.certificate_status AS IMPACTED_CERT_STATUS, -- Business criticality indicator
TIMESTAMP_MILLIS(ra.updated_at) AS IMPACTED_LAST_UPDATED, -- When impacted asset was last updated
-- Create notification priority based on dependency depth
CASE
WHEN l.level = 1 THEN 'DIRECT DEPENDENCY - HIGH PRIORITY'
WHEN l.level = 2 THEN 'SECONDARY DEPENDENCY - MEDIUM PRIORITY'
ELSE 'INDIRECT DEPENDENCY - LOW PRIORITY'
END AS NOTIFICATION_PRIORITY
FROM gold.assets a
INNER JOIN LINEAGE l
ON a.guid = l.start_guid -- Join on asset identifier
LEFT JOIN gold.assets ra
ON l.related_guid = ra.guid -- Get metadata for impacted assets
WHERE
-- START HERE: Asset you plan to change (use guid or QUALIFIED_NAME)
-- a.asset_qualified_name = 'default/snowflake/123/ANALYTICS/DIM_CUSTOMERS'
-- AND a.asset_type = 'Table'
a.guid = 'ff0f00d5-dde5-4cf9-b199-2ab09a961bd2'
-- Look DOWNSTREAM to find what depends on it
AND l.direction = 'DOWNSTREAM'
ORDER BY
l.level ASC, -- Show direct dependencies first (highest risk)
l.related_type, -- Group by type (Dashboards, Tables, etc.)
l.related_name; -- Alphabetically within each type
Sample output
| SOURCE_ASSET | SOURCE_TYPE | IMPACTED_ASSET | IMPACTED_TYPE | DEPENDENCY_DEPTH | IMPACTED_SYSTEM | NOTIFICATION_PRIORITY |
|---|---|---|---|---|---|---|
| DIM_CUSTOMER | Table | DIM_CUSTOMER | PowerBITable | 1 | powerbi | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | DIM_CUSTOMER | PowerBITable | 1 | powerbi | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | DIM_CUSTOMER | PowerBITable | 1 | powerbi | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | DIM_CUSTOMER | PowerBITable | 1 | powerbi | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | DIM_CUSTOMER | PowerBITable | 1 | powerbi | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | dim_Customer | PowerBITable | 1 | powerbi | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | DBx.qvd | QlikDataset | 1 | qlik-sense | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | dim_customer | QlikDataset | 1 | qlik-sense | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | ORDERS_DENORMALIZED | Table | 1 | snowflake | DIRECT DEPENDENCY - HIGH PRIORITY |
| DIM_CUSTOMER | Table | Demo_DataSource_WWI | TableauDatasource | 1 | tableau | DIRECT DEPENDENCY - HIGH PRIORITY |