
## How can Atlan generate upstream lineage from the data warehouse layer?

URL: https://docs.atlan.com/product/capabilities/lineage/references/how-can-atlan-generate-upstream-lineage-from-the-data-warehouse-layer

> Learn about how can atlan generate upstream lineage from the data warehouse layer?.

Atlan has 2 API endpoints to generate lineage:

- [lineage between assets](https://docs.atlan.com/llms/platform/python/manage-lineage/llms.txt)
- [column-level lineage](https://docs.atlan.com/llms/platform/python/manage-lineage/llms.txt)

Atlan generates upstream lineage in the following ways:

- Custom jobs:
 - Constraint - these jobs do not have an interface for Atlan to extract lineage. For example, custom Python jobs that move data from RDBMS to S3 to Snowflake.
 - Recommended path - use the [lineage API](https://docs.atlan.com/llms/platform/python/manage-lineage/llms.txt) to push source-to-target mappings to Atlan.
- Data integration tools: 
 - Constraint - these tools have historically not had metadata APIs for Atlan to extract lineage.
 - Recommended path - Atlan has released support for data integration tools that have released metadata APIs, such as [Fivetran](https://docs.atlan.com/llms/connectors/fivetran/set-up-fivetran/llms.txt).
- Orchestration tools: 
 - Constraint - you need to run [DAGs](https://docs.atlan.com/llms/connectors/apache-airflow-openlineage/integrate-apache-airflow-openlineage/llms.txt) or [jobs](https://docs.atlan.com/llms/connectors/apache-spark-openlineage/integrate-apache-spark-openlineage/llms.txt) to catalog assets and lineage in Atlan, unlike other workflows that catalog assets after a workflow run.
 - Recommended path - use the [lineage API](https://docs.atlan.com/llms/platform/python/manage-lineage/llms.txt) to either create lineage directly or using OpenLineage.

---
