> For the complete documentation index, see [llms.txt](https://docs.ovaledge.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.ovaledge.com/connectors/connector-repositories/data-warehouse/snowflake/snowflake-lineage.md).

# Snowflake - Lineage

This article outlines the lineage coverage, configuration requirements, metadata handling, supported scenarios, component behaviors, transformation coverage, and known limitations for lineage extraction in Snowflake. The lineage process provides visibility into data flow across tables, views, tasks, pipes, and other Snowflake objects. It supports table-level and column-level lineage for standard ELT workflows and utilizes query history metadata to improve lineage coverage across operational and analytical workloads.

## Lineage Configuration Requirements

Accurate lineage extraction depends on Snowflake connectivity, metadata availability, and query history access. These requirements must be properly configured and available to ensure successful lineage generation and source-target resolution.

### Configuration Requirements Table

<table><thead><tr><th width="258">Configuration</th><th>Required Detail</th></tr></thead><tbody><tr><td>Snowflake Connection</td><td>Standard Snowflake connectivity must be configured</td></tr><tr><td>Metadata Access</td><td>Access to the object metadata is required</td></tr><tr><td>Query History Access</td><td>Query log/history access should be enabled for lineage extraction</td></tr><tr><td>Dependent Object Availability</td><td>All referenced tables, views, and objects must be accessible</td></tr><tr><td>Query Log Configuration</td><td>Query history extraction should be enabled to improve lineage completeness</td></tr></tbody></table>

{% hint style="warning" %}
Missing metadata, unavailable query history, or inaccessible dependent objects may result in incomplete lineage generation.
{% endhint %}

## Lineage Components

| Component                       | Availability |
| ------------------------------- | :----------: |
| Tables                          |       ✅      |
| Views                           |       ✅      |
| Snowflake Tasks                 |       ✅      |
| Snowflake Pipes                 |       ✅      |
| Stored Procedures (SQL)         |       ✅      |
| Stored Procedures (JavaScript)  |      ⚠️      |
| Functions                       |      ⚠️      |
| Query Logs (History)            |       ✅      |
| Files (Stage → Table via Pipes) |       ✅      |
| Cross-Connection Objects        |      ⚠️      |
| Semi-structured Data (JSON)     |      ⚠️      |
| Dynamic SQL                     |       ❌      |
| DELETE Operations (Tasks)       |       ❌      |

{% hint style="info" %}
The ⚠️ icon indicates partially supported functionality with limited lineage coverage in applicable scenarios.
{% endhint %}

## Column Creation Support

This section outlines lineage support for column creation and transformation scenarios.

### Column Creation from Lineage

| Feature                         | Supported |
| ------------------------------- | :-------: |
| Direct Column Mapping           |     ✅     |
| Derived Columns                 |     ✅     |
| Aggregations (SUM, COUNT, etc.) |     ⚠️    |
| Expressions / CASE Statements   |     ⚠️    |
| Aliases                         |     ⚠️    |
| SELECT \* Expansion             |     ⚠️    |
| Task Fallback Mapping           |     ⚠️    |
| JSON / Semi-structured Columns  |     ⚠️    |
| Renamed Columns (AS)            |     ⚠️    |
| Dynamic Column Generation       |     ❌     |

{% hint style="info" %}
The ⚠️ icon indicates partially supported functionality with limited lineage coverage in applicable scenarios.
{% endhint %}

## Supported Use Cases

The connector supports lineage extraction across standard Snowflake data ingestion, transformation, and analytics workloads. These use cases represent scenarios where lineage extraction functions as expected.

### Supported Lineage Scenarios

| Supported                                 | Details                                                      |
| ----------------------------------------- | ------------------------------------------------------------ |
| ELT Pipelines (INSERT INTO SELECT)        | Lineage extraction for standard ELT transformations          |
| View-Based Transformations                | Lineage across views and dependent source objects            |
| Snowflake Tasks (Scheduled Workflows)     | Lineage for task-driven workflows                            |
| Snowflake Pipes (File to Table Ingestion) | Lineage from staged files to target tables                   |
| Stored Procedures (SQL-based)             | Lineage extraction from SQL-based stored procedures          |
| Query History / Query Log Lineage         | Lineage generated using query history metadata               |
| Cross-Schema Lineage                      | Lineage across schemas within the same Snowflake environment |
| Data Warehouse / Analytics Workflows      | Lineage for analytical and reporting workloads               |

{% hint style="info" %}
Lineage extraction is based on Snowflake metadata, object relationships, and query history information available through the configured connection.
{% endhint %}

## Partial or Limited Coverage

Certain scenarios function only with partial coverage due to SQL complexity, parser limitations, metadata dependencies, or runtime execution behavior.

### Scenarios

<table><thead><tr><th width="224">Scenario</th><th width="317">Limitation Description</th><th width="295">Recommendation / Workaround</th></tr></thead><tbody><tr><td>JavaScript Stored Procedures</td><td>Only embedded SQL statements are extracted</td><td>Prefer SQL-based procedures or standardize SQL extraction</td></tr><tr><td>Semi-structured Data (JSON)</td><td>Certain transformation details may not be fully resolved</td><td>Materialize JSON transformations into structured tables or views</td></tr><tr><td>Complex Task Queries</td><td>Query logic may not be fully interpreted</td><td>Simplify SQL logic or use explicit column mappings</td></tr><tr><td>Functions (Complex Logic)</td><td>Coverage depends on parser support</td><td>Use simpler SQL functions or validate lineage manually</td></tr><tr><td>Cross-Connection Lineage</td><td>Coverage depends on lineage configuration and metadata availability</td><td>Configure connection priority and ensure metadata access</td></tr><tr><td>Column Aliases / Renaming</td><td>Aliases may not resolve in fallback scenarios</td><td>Use explicit column references</td></tr><tr><td>SELECT * Usage</td><td>Limited support for column expansion</td><td>Avoid SELECT * and define columns explicitly</td></tr><tr><td>Query Log Dependency</td><td>Requires proper query history configuration</td><td>Enable and validate query history extraction</td></tr></tbody></table>

{% hint style="warning" %}
Complex transformations and incomplete metadata may reduce column-level lineage accuracy.
{% endhint %}

## Unsupported Scenarios

The connector does not support lineage extraction for certain runtime-generated or non-SQL-based processing patterns due to the absence of accessible metadata or parser limitations.

### Unsupported Lineage

<table><thead><tr><th width="222">Not Supported</th><th width="303">Description</th><th width="295">Recommendation / Workaround</th></tr></thead><tbody><tr><td>Dynamic SQL (EXECUTE IMMEDIATE, IDENTIFIER)</td><td>Runtime-generated SQL cannot be parsed</td><td>Use query history lineage or document manually</td></tr><tr><td>Runtime-generated Object Names</td><td>Objects are resolved only during execution</td><td>Prefer static SQL or capture executed queries</td></tr><tr><td>DELETE Operations in Tasks</td><td>DELETE-based lineage is not handled</td><td>Track through downstream operations or manual lineage</td></tr><tr><td>Complex JavaScript Logic (Procedures)</td><td>Non-SQL logic is not parsed</td><td>Refactor logic into SQL-based procedures where possible</td></tr><tr><td>External / Non-SQL Logic (Scripts, APIs)</td><td>Outside SQL lineage scope</td><td>Document externally or use additional connectors</td></tr><tr><td>Unsupported SQL Constructs</td><td>Parser cannot interpret certain patterns</td><td>Simplify queries using standard Snowflake SQL syntax</td></tr><tr><td>Encrypted / Obfuscated Logic</td><td>SQL not accessible</td><td>Maintain readable SQL or document manually</td></tr></tbody></table>

{% hint style="info" %}
Unsupported scenarios will not produce lineage and may appear disconnected in lineage visualization.
{% endhint %}

## Current Functional Status

This section outlines the present state of lineage coverage supported by the Snowflake connector based on the available capabilities and limitations.

<table><thead><tr><th width="200">Status Area</th><th>Details</th></tr></thead><tbody><tr><td>Overall Coverage</td><td>Strong coverage across standard Snowflake ELT workloads</td></tr><tr><td>Lineage Depth</td><td>Table-level lineage with broad column-level lineage support</td></tr><tr><td>Supported Inputs</td><td>Tables, views, tasks, pipes, SQL stored procedures, files, and query history</td></tr><tr><td>Functional Scope</td><td>Lineage extraction for ingestion, transformation, and analytics workflows</td></tr><tr><td>Limitation Areas</td><td>Dynamic SQL, complex JavaScript procedures, semi-structured data transformations, and cross-connection lineage</td></tr><tr><td>Resulting Output</td><td>Reliable lineage for most Snowflake workloads with partial coverage for advanced transformation scenarios</td></tr></tbody></table>

{% hint style="info" %}
The Snowflake connector is production-ready and provides strong lineage coverage for standard ELT workflows, including tables, views, tasks, pipes, and query-history-based lineage. Advanced scenarios such as dynamic SQL, complex procedural logic, and certain transformation patterns have partial or limited coverage and may require manual validation.
{% endhint %}

***

Copyright © 2026, OvalEdge LLC, Peachtree Corners GA USA


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.ovaledge.com/connectors/connector-repositories/data-warehouse/snowflake/snowflake-lineage.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
