Lineage full export
Use Lakehouse to export a unified view of lineage that you can reuse across impact analysis, dashboard impact, root cause analysis, and other lineage use cases.
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 Gold layer is set up for your SQL engine. See Set up gold layer in Snowflake. For Databricks (Databricks setup guide) or BigQuery (BigQuery setup guide) setups, contact your Atlan Customer Success team.
Full lineage export
The following query joins GOLD.FULL_LINEAGE with GOLD.ASSET_LOOKUP_TABLE to include owners, certificate status, and connectors for the start and related assets.
The query returns lineage rows for assets updated in the last 2 days, including upstream and downstream dependencies. Use it to monitor recent updates, identify downstream dependencies for impact analysis, trace upstream sources during root cause investigations, and validate lineage changes after deployments.
The output includes the depth of each connection, which helps distinguish direct and indirect dependencies.
- Snowflake
- Databricks
- BigQuery
SELECT
A.GUID, -- Starting asset's unique identifier
A.ASSET_NAME, -- Starting asset name (e.g., DIM_CUSTOMERS)
A.ASSET_QUALIFIED_NAME, -- Full path including connection/database/schema
A.ASSET_TYPE, -- Asset type (Table, View, Dashboard, etc.)
TO_TIMESTAMP_LTZ(A.UPDATED_AT / 1000) AS LAST_UPDATED, -- Convert epoch milliseconds to timestamp
DATEDIFF(
day,
TO_TIMESTAMP_LTZ(A.UPDATED_AT / 1000),
CURRENT_TIMESTAMP()
) AS DAYS_SINCE_UPDATE, -- Number of days since last update
L.START_NAME, -- Lineage start point name
L.START_TYPE, -- Type at lineage start
L.RELATED_NAME, -- Related asset name in the lineage path
L.RELATED_TYPE, -- Related asset type (Table, Dashboard, etc.)
L.DIRECTION, -- UPSTREAM (sources) or DOWNSTREAM (consumers)
L.LEVEL -- Depth in lineage (1=direct, 2=2-hops, etc.)
FROM ASSETS A
INNER JOIN LINEAGE L
ON A.GUID = L.START_GUID -- Join on asset identifier
WHERE
A.HAS_LINEAGE -- Only include assets with lineage relationships
AND A.CONNECTOR_NAME IN ('snowflake', 'redshift', 'bigquery') -- Focus on major data warehouses
AND DATEDIFF(
day,
TO_TIMESTAMP_LTZ(A.UPDATED_AT / 1000), -- Convert epoch milliseconds to timestamp
CURRENT_TIMESTAMP()
) <= 2 -- Only assets updated within last 2 days
GROUP BY
A.GUID, A.ASSET_NAME, A.ASSET_QUALIFIED_NAME, A.ASSET_TYPE,
A.UPDATED_AT,
L.START_NAME, L.START_TYPE, L.RELATED_NAME, L.RELATED_TYPE,
L.DIRECTION, L.LEVEL
ORDER BY
A.UPDATED_AT DESC, -- Most recently updated first
A.ASSET_QUALIFIED_NAME, -- Then group by asset
L.DIRECTION, -- Show upstream first, then downstream
L.LEVEL -- Order by proximity (closest first)
LIMIT 200;
SELECT
A.GUID, -- Starting asset's unique identifier
A.ASSET_NAME, -- Starting asset name (e.g., DIM_CUSTOMERS)
A.ASSET_QUALIFIED_NAME, -- Full path including connection/database/schema
A.ASSET_TYPE, -- Asset type (Table, View, Dashboard, etc.)
TO_TIMESTAMP_LTZ(A.UPDATED_AT / 1000) AS LAST_UPDATED, -- Convert epoch milliseconds to timestamp
DATEDIFF(
day,
TO_TIMESTAMP_LTZ(A.UPDATED_AT / 1000),
CURRENT_TIMESTAMP()
) AS DAYS_SINCE_UPDATE, -- Number of days since last update
L.START_NAME, -- Lineage start point name
L.START_TYPE, -- Type at lineage start
L.RELATED_NAME, -- Related asset name in the lineage path
L.RELATED_TYPE, -- Related asset type (Table, Dashboard, etc.)
L.DIRECTION, -- UPSTREAM (sources) or DOWNSTREAM (consumers)
L.LEVEL -- Depth in lineage (1=direct, 2=2-hops, etc.)
FROM ASSETS A
INNER JOIN LINEAGE L
ON A.GUID = L.START_GUID -- Join on asset identifier
WHERE
A.HAS_LINEAGE -- Only include assets with lineage relationships
AND A.CONNECTOR_NAME IN ('snowflake', 'redshift', 'bigquery') -- Focus on major data warehouses
AND DATEDIFF(
day,
TO_TIMESTAMP_LTZ(A.UPDATED_AT / 1000), -- Convert epoch milliseconds to timestamp
CURRENT_TIMESTAMP()
) <= 2 -- Only assets updated within last 2 days
GROUP BY
A.GUID, A.ASSET_NAME, A.ASSET_QUALIFIED_NAME, A.ASSET_TYPE,
A.UPDATED_AT,
L.START_NAME, L.START_TYPE, L.RELATED_NAME, L.RELATED_TYPE,
L.DIRECTION, L.LEVEL
ORDER BY
A.UPDATED_AT DESC, -- Most recently updated first
A.ASSET_QUALIFIED_NAME, -- Then group by asset
L.DIRECTION, -- Show upstream first, then downstream
L.LEVEL -- Order by proximity (closest first)
LIMIT 200;
SET @@dataset_id = 'ATLAN_GOLD';
SELECT
A.GUID, -- Starting asset's unique identifier
A.ASSET_NAME, -- Starting asset name (e.g., DIM_CUSTOMERS)
A.ASSET_QUALIFIED_NAME, -- Full path including connection/database/schema
A.ASSET_TYPE, -- Asset type (Table, View, Dashboard, etc.)
TIMESTAMP_MILLIS(CAST(A.UPDATED_AT AS INT64)) AS LAST_UPDATED, -- epoch ms -> TIMESTAMP
TIMESTAMP_DIFF(
CURRENT_TIMESTAMP(),
TIMESTAMP_MILLIS(CAST(A.UPDATED_AT AS INT64)),
DAY
) AS DAYS_SINCE_UPDATE, -- days since last update
L.START_NAME, -- Lineage start point name
L.START_TYPE, -- Type at lineage start
L.RELATED_NAME, -- Related asset name in the lineage path
L.RELATED_TYPE, -- Related asset type (Table, Dashboard, etc.)
L.DIRECTION, -- UPSTREAM (sources) or DOWNSTREAM (consumers)
L.LEVEL -- Depth in lineage (1=direct, 2=2-hops, etc.)
FROM `ASSETS` A
JOIN `LINEAGE` L
ON A.GUID = L.START_GUID -- Join on asset identifier
WHERE
A.HAS_LINEAGE -- Only include assets with lineage relationships
AND A.CONNECTOR_NAME IN ('snowflake', 'redshift', 'bigquery')
AND TIMESTAMP_DIFF(
CURRENT_TIMESTAMP(),
TIMESTAMP_MILLIS(CAST(A.UPDATED_AT AS INT64)),
DAY
) <= 2 -- Only assets updated within last 2 days
ORDER BY
A.UPDATED_AT DESC, -- Most recently updated first (epoch ms)
A.ASSET_QUALIFIED_NAME,
L.DIRECTION,
L.LEVEL
LIMIT 200;
Sample output
| ASSET_NAME | ASSET_TYPE | RELATED_NAME | RELATED_TYPE | DIRECTION | LEVEL |
|---|---|---|---|---|---|
| ACCOUNT_ID | Column | ACCOUNT_ID | PowerBIColumn | DOWNSTREAM | 1 |
| ASSESSMENT_ID | Column | ASSESSMENT_ID | PowerBIColumn | DOWNSTREAM | 1 |
| CREDIT_LIMIT | Column | CREDIT_LIMIT | PowerBIColumn | DOWNSTREAM | 1 |
| CREDIT_SCORE | Column | CREDIT_SCORE | PowerBIColumn | DOWNSTREAM | 1 |
| CREDIT_SCORE | Column | Executive Overview | PowerBIPage | DOWNSTREAM | 2 |
| CURRENT_BALANCE | Column | CURRENT_BALANCE | PowerBIColumn | DOWNSTREAM | 1 |
| CUSTOMER_ID | Column | CUSTOMER_ID | PowerBIColumn | DOWNSTREAM | 1 |
| CUSTOMER_ID | Column | Executive Overview | PowerBIPage | DOWNSTREAM | 2 |
| DEBT_TO_INCOME_RATIO | Column | DEBT_TO_INCOME_RATIO | PowerBIColumn | DOWNSTREAM | 1 |
| EXPOSURE_AT_DEFAULT | Column | EXPOSURE_AT_DEFAULT | PowerBIColumn | DOWNSTREAM | 1 |
| PROBABILITY_OF_DEFAULT | Column | PROBABILITY_OF_DEFAULT | PowerBIColumn | DOWNSTREAM | 1 |
| RECENT_INQUIRIES | Column | RECENT_INQUIRIES | PowerBIColumn | DOWNSTREAM | 1 |
| RISK_GRADE | Column | RISK_GRADE | PowerBIColumn | DOWNSTREAM | 1 |
| LAST_UPDATE | Column | Last Update | SigmaDataElementField | DOWNSTREAM | 1 |
| CART_TAX | Table | osha_inspection | Table | DOWNSTREAM | 1 |