Skip to main content

Core SQL pipeline framework — joints, engines, catalogs

Project description

Rivet Logo

Rivet

Declarative SQL pipelines with multi-engine execution, quality checks, and built-in testing.

PyPI version Python versions License Docs


Rivet is a framework that revolutionizes data pipelines by strictly separating concerns. It allows you to define your pipeline once and run it on DuckDB, Polars, PySpark, Postgres or any other engine without changing your logic.

🧠 The Mental Model

Rivet pipelines are built on three foundational pillars:

Concept Rivet Abstraction Description
What to compute Joints Named, declarative units of computation (SQL, Python, Source, Sink).
How to compute Engines Deterministic compute engines that execute the logic.
Where data lives Catalogs Named references to data locations like filesystems, databases, or object stores.

This architecture lets you build portable pipelines. Adjacent SQL joints assigned to the same engine are automatically fused into a single query to reduce memory pressure and avoid unnecessary data movement.


✨ Key Features

  • 🔄 Multi-Engine Execution: Swap compute engines without rewriting pipelines.
  • 🛠️ Declarative Flexibility: Define joints using SQL, YAML, or Python.
  • 🛡️ Ironclad Data Quality: * Assertions run pre-write on computed data to catch errors before they hit your target.
    • Audits run post-write by reading back from the target catalog to verify state.
  • 🧪 Built-in Offline Testing: Validate your transformation logic using offline fixture data without needing a live database.
  • 💻 Interactive REPL: Use rivet repl for a full-screen terminal UI to explore data, run ad-hoc queries, and iterate on pipeline logic.
  • 🔀 Advanced Write Strategies: Supports 7 write modes including append, replace, merge, and scd2 (Slowly Changing Dimensions).

⚡ Quick Start

1. Install

Install Rivet with all plugins:

pip install 'rivetsql[all]'

Or install only what you need:

pip install 'rivetsql[duckdb]'    # recommended for local dev

2. Initialize a Project

Scaffold a new project with the required directory structure:

rivet init my_pipeline
cd my_pipeline

3. Run the Pipeline

Compile and execute your DAG:

rivet run

💡 Example: A Complete Pipeline

Three files. Source → Transform → Sink. That's it.

1. Read raw data from a catalog:

-- sources/raw_orders.sql
-- rivet:name: raw_orders
-- rivet:type: source
-- rivet:catalog: local
-- rivet:table: raw_orders
select * from raw_orders

2. Transform with plain SQL:

-- joints/daily_revenue.sql
-- rivet:name: daily_revenue
-- rivet:type: sql
SELECT
    order_date,
    SUM(amount) AS revenue
FROM raw_orders
WHERE status = 'completed'
GROUP BY order_date

3. Write results with quality checks:

-- sinks/daily_revenue_out.sql
-- rivet:name: daily_revenue_out
-- rivet:type: sink
-- rivet:upstream: [daily_revenue]
-- rivet:catalog: warehouse
-- rivet:table: daily_revenue
-- rivet:write_strategy: replace
-- rivet:assert: not_null(revenue)
-- rivet:assert: row_count(min=1)
$ rivet run
✓ compiled 3 joints in 38ms
  raw_orders           OK (1200 rows)
  daily_revenue        OK (90 rows)
  daily_revenue_out    OK (90 rows)

  38ms | 3 joints | 1 groups | 0 failures

If an assertion like not_null fails, the write is completely aborted, keeping your target clean.


🧩 Rich Plugin Ecosystem

Rivet is fully extensible through plugins.

Package Engine Type Catalog Type Best For
rivet-duckdb duckdb duckdb Local analytics and fast SQL on files.
rivet-polars polars In-process DataFrame transforms.
rivet-pyspark pyspark Large-scale distributed processing.
rivet-postgres postgres postgres PostgreSQL databases as sources and sinks.
rivet-aws s3, glue AWS S3 object storage and Glue Data Catalog.
rivet-databricks databricks unity, databricks Databricks SQL warehouses and Unity Catalog.

📚 Documentation

Start here:


🤝 Contributing

Pull requests are welcome! Check out our Contribution Guidelines.

git clone https://github.com/rivetsql/rivetsql

Built for data engineers who love SQL, demand quality, and value flexibility.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

rivetsql-0.1.13.tar.gz (555.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

rivetsql-0.1.13-py3-none-any.whl (379.0 kB view details)

Uploaded Python 3

File details

Details for the file rivetsql-0.1.13.tar.gz.

File metadata

  • Download URL: rivetsql-0.1.13.tar.gz
  • Upload date:
  • Size: 555.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rivetsql-0.1.13.tar.gz
Algorithm Hash digest
SHA256 69bd4037222c8aed44a1352f1d248daad157ad79d8c0927c4e271b578c7dcf9d
MD5 b1eaf03411aa4529da2bb8ac24ebbee7
BLAKE2b-256 8cf57ac06ee6b66938495de243f5b6d35e2db786abdf5ebf574446131ec03c36

See more details on using hashes here.

Provenance

The following attestation bundles were made for rivetsql-0.1.13.tar.gz:

Publisher: publish.yml on rivetsql/rivetsql

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file rivetsql-0.1.13-py3-none-any.whl.

File metadata

  • Download URL: rivetsql-0.1.13-py3-none-any.whl
  • Upload date:
  • Size: 379.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for rivetsql-0.1.13-py3-none-any.whl
Algorithm Hash digest
SHA256 5ad9cb28be7a40d132e1cd0da00cbdde8499d75dc6cf118f227e410b6de208e1
MD5 5299bef3680a1d0d9b9a6c43f33624db
BLAKE2b-256 f7e2c5376eeb275c6888fca3f0531f832da193208d6a0e9c543d6e40e048e14d

See more details on using hashes here.

Provenance

The following attestation bundles were made for rivetsql-0.1.13-py3-none-any.whl:

Publisher: publish.yml on rivetsql/rivetsql

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page