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 directly from PyPI: pip install rivetsql

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.4.tar.gz (827.7 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.4-py3-none-any.whl (320.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: rivetsql-0.1.4.tar.gz
  • Upload date:
  • Size: 827.7 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.4.tar.gz
Algorithm Hash digest
SHA256 6fa56ae44f42c0d26112489324ae7b8000053d78feeef385223223f9a260b366
MD5 accee8ea70f0b0609304c4dc363e4f32
BLAKE2b-256 99884f41a1cd1f1deaf28224351d1eeb0e874c2bd44c22890ff0eb8579b4adc6

See more details on using hashes here.

Provenance

The following attestation bundles were made for rivetsql-0.1.4.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.4-py3-none-any.whl.

File metadata

  • Download URL: rivetsql-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 320.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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 5d7866e02282a2476cb3a88fa97e3945e0cc76d279e6ec656e2b5692dd5c6a08
MD5 51d4f2dd332eaee2840872eae2011f93
BLAKE2b-256 491546d85a367e17dd433e901ba42f95fba2bc807bf32b30fd419d1dc2eb35cc

See more details on using hashes here.

Provenance

The following attestation bundles were made for rivetsql-0.1.4-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