The refactorable warehouse. Verify early, test properly, and refactor safely.
Website · Docs · Quickstart · Roadmap
Change your warehouse as often as your code. SQLBuild brings compile-time checks, tests and diffs to your SQL, so change is safe. It is a free, open-source framework for SQL and Python data pipelines, and it keeps its state in append-only tables in your own warehouse: no external state database, no manifest files and no paid tier.
Quick start
pip install sqlbuild
sqb playground waffle-shop
cd waffle-shop
sqb plan
sqb build
sqb test
The playground runs on local DuckDB, with no warehouse credentials.
What it does
Catch mistakes before anything runs
- Compile-time checks. SQLBuild resolves references, validates SQL, infers column types, checks contracts and computes column lineage, all offline. A typo'd column fails in seconds, not halfway through a warehouse run.
- Your conventions as rules. Built-in and custom Python rules turn review comments into compile errors: for example, marts can't read sources directly, or every final model declares its key.
Prove it works
- Tests across models. SQL tests mock the sources and check the result through every model in between, with macros as test helpers. Macro, UDF and table-function tests are built in.
- End-to-end scenarios. Build the real graph against fixture data, capture fixtures from the warehouse, and replay them locally on DuckDB in CI. See scenarios.
- Audits and diffs. Audits run before data reaches the target table, and data diffs compare dev against prod or any query.
Change it without rebuilding everything
- Renames keep their history. Rename or move an incremental or snapshot model and SQLBuild migrates the existing table instead of rebuilding it.
- Replay on change. When a model's SQL changes, choose how far back to reprocess, from only the
new data to the last 14 days to a full rebuild, with
replay_on_change. - Macros don't have to be global. Keep macros, enums and constants next to the models that use
them, and preview what a move would break with
sqb scope. See declaration scopes. - Tidy up safely. The janitor archives stale tables before anything is deleted.
Ingestion with Python loaders, and Python tasks, assets and checks, run in the same graph as your SQL models. See the docs for everything else.
Example
A model is a SQL file with a MODEL() header and a SELECT:
MODEL (
materialized table,
columns (
order_id (audits [not_null, unique]),
),
tags [marts],
);
SELECT
o.order_id,
o.customer_id,
p.amount_cents AS total_cents
FROM __ref("stg_orders") o
JOIN __ref("stg_payments") p USING (order_id)
A test mocks the sources and asserts on the model, resolving every model in between from its real SQL:
TEST();
WITH
__source__raw__orders AS (
@mock_orders()
),
__source__raw__payments AS (
SELECT
1 AS payment_id,
1 AS order_id,
1500 AS amount_cents,
'credit_card' AS method
),
__expected__fact_orders AS (
SELECT 1 AS order_id, 100 AS customer_id, 1500 AS total_cents
)
SELECT 1
Warehouses
| Warehouse | Status |
|---|---|
| Snowflake | Supported |
| DuckDB | Supported |
| MotherDuck | Supported |
| PostgreSQL | Supported |
| BigQuery | Beta |
| Databricks | Beta |
| SQL Server | Beta |
Snowflake is the main target. Beta adapters build, test and plan, but have had less production use so far. See adapters.
Free and independent
SQLBuild is Apache 2.0 and will stay free: no paid tier, no commercial edition, and no feature held back for one. Its state lives in your warehouse, next to your data. See the roadmap for what's next.
Contributing
Contributions are welcome. See CONTRIBUTING.md.
License
SQLBuild is licensed under the Apache License 2.0.
Release files for sqlbuild 0.119.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| sqlbuild-0.119.3.tar.gz | 1.9 MB | Details |
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| sqlbuild-0.119.3-cp312-abi3-win_amd64.whl | CPython 3.12 | abi3 | Windows x86-64 | Details |
| sqlbuild-0.119.3-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.12 | abi3 | Linux glibc 2.17+ x86-64 | Details |
| sqlbuild-0.119.3-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl | CPython 3.12 | abi3 | Linux glibc 2.17+ ARM64 | Details |
| sqlbuild-0.119.3-cp312-abi3-macosx_11_0_arm64.whl | CPython 3.12 | abi3 | macOS 11.0+ ARM64 | Details |
| sqlbuild-0.119.3-cp312-abi3-macosx_10_12_x86_64.whl | CPython 3.12 | abi3 | macOS 10.12+ x86-64 | Details |
Total release size: 74.2 MB
Release files / sqlbuild-0.119.3.tar.gz
| Download URL | sqlbuild-0.119.3.tar.gz |
|---|---|
| Size | 1.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a26ab64765a5e0e23f6f7754776a77a5726ba8b3cb8a9680e48fd1e150df8abe
|
|
BLAKE2b-256 checksum How to use checksums |
fb85d332d5747550d418e0b10905614f9d0f9cb6caf5f8cea53fdc23c24745d4
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / sqlbuild-0.119.3-cp312-abi3-win_amd64.whl
| Download URL | sqlbuild-0.119.3-cp312-abi3-win_amd64.whl |
|---|---|
| Size | 15.3 MB |
| Tags | CPython 3.12 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
32a43f950a0e3747b3367a6264c0a602a051d9aea659be2233261e1e072ff536
|
|
BLAKE2b-256 checksum How to use checksums |
90ae3ecfa588b727187bcbade7873858afcaae6036f843cd6a08e1fb1a3d13ef
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / sqlbuild-0.119.3-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | sqlbuild-0.119.3-cp312-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 14.7 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
d2c1e4b393122634924ad7e01f7cb900e0c567c4155841fe621d72b5dec70722
|
|
BLAKE2b-256 checksum How to use checksums |
6f59a97945f1828b1e9afa984e8d94c83f8905899036b1da8c2ce9973025d918
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / sqlbuild-0.119.3-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
| Download URL | sqlbuild-0.119.3-cp312-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl |
|---|---|
| Size | 14.1 MB |
| Tags | CPython 3.12 Linux glibc 2.17+ ARM64 abi3 |
|
SHA-256 checksum How to use checksums |
43c93bd47878b9465926d61f9762aec08fd9a9af1cd5bf888fee1cf407ef6a68
|
|
BLAKE2b-256 checksum How to use checksums |
61663887547ce2013ee8d18c4cc568342706662c4922e4ad409d965725f7dafe
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / sqlbuild-0.119.3-cp312-abi3-macosx_11_0_arm64.whl
| Download URL | sqlbuild-0.119.3-cp312-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 14.0 MB |
| Tags | CPython 3.12 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
bb4b8d299ce7172d17469b30572605e724e73e20d2e2b6d580c1568a6e790cd4
|
|
BLAKE2b-256 checksum How to use checksums |
a99ee339317826d4b4190cfc0ca9fe807b9bd82aa84739b5ff225c57f76f5039
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency logRelease files / sqlbuild-0.119.3-cp312-abi3-macosx_10_12_x86_64.whl
| Download URL | sqlbuild-0.119.3-cp312-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 14.3 MB |
| Tags | CPython 3.12 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
0e992a6f77e1b2ccb752dd6a7460d814416ef7e5ea1edd902f72edbb249884e3
|
|
BLAKE2b-256 checksum How to use checksums |
00ae63d86e80b1ea009458b4c6ea11a87308c867feac6e9de27a92c84fcc3064
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 26, 2026.
Transparency log