Skip to main content

trino-lineage

Column-level lineage extraction for Trino SQL. Parse Trino SQL files, extract column-level lineage via sqlglot AST analysis, and render graph visuals.

Features

  • Column-level lineage tracing -- resolve every column from source to target through CTEs, subqueries, JOINs, aggregations, and window functions
  • Deep nested SQL support -- handles unlimited CTE nesting, UNION, SELECT *, aliases, and complex expressions
  • Professional graph rendering (Graphviz) -- box-style diagrams with color-coded table nodes
  • REST API -- POST SQL and receive JSON lineage with optional DOT/PNG graph output
  • CLI tool -- trino-lineage parse file.sql --output-dir ./out
  • Multiple output formats -- JSON lineage report, DOT file, PNG rendering

Quick Start

pip install trino-lineage

# CLI: parse a SQL file
trino-lineage parse query.sql --output-dir ./lineage_output

# API: start server
trino-lineage serve

Architecture

SQL File  -->  SQL Parser  -->  Lineage Engine  -->  Graphviz Renderer
(Trino)       (sqlglot)                           -->  JSON Lineage
                                                    -->  DOT + PNG

Output Format

JSON Lineage

{
  "lineage": [
    {
      "target": { "table": "analytics.orders_agg", "column": "total_revenue" },
      "sources": [
        { "table": "raw.orders", "column": "quantity", "relation": "through_expression" },
        { "table": "raw.orders", "column": "price", "relation": "through_expression" }
      ],
      "transformation": "expression",
      "expression": "SUM(o.quantity * o.price)",
      "confidence": 1.0
    }
  ],
  "tables": {
    "sources": { "raw.orders": ["quantity", "price"] },
    "targets": { "analytics.orders_agg": ["total_revenue"] }
  },
  "metadata": {
    "statements_parsed": 1,
    "edges_count": 5,
    "tables_count": 2,
    "processing_time_ms": 0.53
  }
}

Graph Output

Below is an example rendered PNG from a multi-table SQL query with JOINs, CTEs, and aggregations:

Lineage Graph Example

The generated graph uses box-style nodes with rounded corners, color-coded table headers (source/target/intermediate), and clean arrow routing between column ports.

API Endpoints

Method Path Description
POST /lineage Submit SQL text, get lineage + graph
POST /lineage/files Upload SQL file(s) for analysis
GET /health Health check

Why trino-lineage?

  • Trino-native -- uses the Trino dialect for maximum SQL compatibility
  • Deep tracing -- resolves columns through unlimited CTE nesting and subquery depth
  • Production-grade -- built for real-world data pipelines with complex SQL
  • Dual interface -- CLI for batch jobs, API for integration

Metadata

Release files for trino-lineage 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for trino-lineage 1.0.0
File Size Uploaded
trino_lineage-1.0.0.tar.gz 489.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for trino-lineage 1.0.0
File Interpreter ABI Platform
trino_lineage-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 511.9 kB

Release files / trino_lineage-1.0.0.tar.gz

Download URL trino_lineage-1.0.0.tar.gz
Size 489.0 kB
Tags Source
SHA-256 checksum
How to use checksums
c33f54fc247ab1f482adeaf9cbb02625079b50c9b229aa6670c8eddeb87c4425
BLAKE2b-256 checksum
How to use checksums
3ebd90eb399a03a99beacba595514a9349b0f76301dc659adf416f07be27c041
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release files / trino_lineage-1.0.0-py3-none-any.whl

Download URL trino_lineage-1.0.0-py3-none-any.whl
Size 22.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5efc112fe7853b30a0aa86f69ef4793a15e190dc105cacf620af717ed77a65c9
BLAKE2b-256 checksum
How to use checksums
b1c1911177d72d4d3bc4ca8583c26ab6f7b3442eff1326b000a2a9e7b81762c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.6

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page