Skip to main content

Cross-engine data transformation built on dbt — federate SQL models across any database, warehouse, or bucket

Project description

DVT — Data Virtualization Tool

Any source. Any target. One SQL project.

DVT is a cross-engine data transformation CLI built on dbt. Write SQL models that JOIN tables living on different database engines — MySQL with Snowflake, Oracle with PostgreSQL, anything with anything — and DVT handles extraction, federation, and loading automatically.

{{ config(materialized='f_table') }}   -- "f" = federated

select
    c.customer_name,
    o.order_date,
    o.total_amount
from {{ source('crm', 'customers') }} c      -- lives on MySQL
join {{ source('erp', 'orders') }} o          -- lives on Snowflake
  on c.customer_id = o.customer_id
where o.order_date >= '2024-01-01'
pip install dvt-core
dvt sync       # installs every adapter + driver your profiles.yml needs
dvt run        # dbt runs what dbt can; DVT federates the rest

Website & full docs: getdvt.net · Quickstart · PyPI


Architecture

DVT is a wrapper around stock dbt-core, not a fork. dbt compiles the project and runs every standard model; DVT picks up the models dbt can't express — cross-engine federation models and locally-executed Python models — and runs them through its own pipeline:

                ┌──────────────────────────────────────────────────────────┐
                │                      dvt run / build                     │
                └──────────────────────────────────────────────────────────┘
                                          │
                         dbt compile  ──  manifest.json
                                          │
              ┌───────────────────────────┴───────────────────────────┐
              │                                                       │
      standard models                                        federated models
   (table / view / incremental)                          (f_table / f_incremental
              │                                          / Python models)
              ▼                                                       │
      ┌───────────────┐                 ┌─────────────────────────────┴───────┐
      │   stock dbt   │                 │ 1. DECOMPOSE  — SQLGlot parses the  │
      │  runs them on │                 │    compiled SQL, maps every table   │
      │  the default  │                 │    to a profiles.yml connection     │
      │    target     │                 │ 2. TRANSPILE + PUSH DOWN — minimal  │
      └───────────────┘                 │    per-source queries in each       │
                                        │    engine's own dialect: only the   │
                                        │    columns used, every single-source│
                                        │    filter pushed to the source      │
                                        │ 3. EXTRACT  — Sling streams each    │
                                        │    result to Parquet, in parallel   │
                                        │ 4. COMPUTE  — Parquet loads into a  │
                                        │    local DuckDB cache; the model's  │
                                        │    JOIN/GROUP BY logic runs there   │
                                        │ 5. LOAD     — Sling delivers the    │
                                        │    result to the target: any        │
                                        │    database, warehouse, or cloud    │
                                        │    bucket (as Parquet/CSV objects)  │
                                        └─────────────────────────────────────┘

Design principles

  • Wrapper, not fork. DVT shells out to the dbt CLI and reads manifest.json — it never imports dbt internals. Your dbt version can move; DVT keeps working. Every dbt feature (Jinja, macros, packages, tests, snapshots, docs) works because it is dbt running it.
  • Dual-dialect by design. Federation models are written in DuckDB dialect and are transpiled per source — they never depend on any engine's syntax. Standard models compile in the default target's dialect via the official dbt adapter. Result: switching your default target (e.g. PostgreSQL → Databricks) is a profile change, not a rewrite.
  • Pushdown first. The fastest row to move is the one you never extract. Filters and column pruning push down to source engines; when every table in a model lives on one engine, the entire query pushes down and nothing moves at all.
  • Your hardware does the joining. Cross-engine compute happens in DuckDB on the machine running DVT — source databases only ever serve simple filtered SELECTs, and no warehouse bills you for the join.

What DVT adds on top of dbt

Capability How
Cross-engine models materialized='f_table' / 'f_incremental' (long aliases: federated_*, federation_*)
Incremental federation watermark-based delta extraction; persistent local cache between runs
Per-model targets config(target='other_output') on federated models — results land on any profile output (standard models are refused a foreign target)
Bucket targets materialize models to S3 / GCS / Azure as Parquet or CSV
Python models, locally dbt-style .py models run on your machine (APIs, pandas, ML) — results land on any target
Bulk seeds dvt seed loads csv / tsv / parquet / json / jsonl / avro / arrow / xlsx via Sling to any engine, with enforced snake_case columns
One-command setup dvt sync installs every adapter and driver your profiles.yml requires
Connection diagnostics dvt debug --all checks every connection on both layers (dbt adapter + Sling)
Cross-engine catalog dvt docs builds one catalog + lineage UI across all engines in your project

Everything else — profiles.yml in ~/.dbt/, sources.yml, ref/source/config, tests, snapshots — is standard dbt. Existing dbt projects work unchanged; sources gain an optional meta.connection to bind them to other engines.

Supported engines

Every engine supported by both dbt and Sling is a DVT adapter — as federation source, federation target, seed target, and default target:

PostgreSQL · MySQL · MariaDB · SQL Server · Oracle · SQLite · DuckDB · Snowflake · BigQuery · Redshift · Databricks · ClickHouse · Trino · Athena · Microsoft Fabric — plus S3, GCS, and Azure Blob as bucket storages.

Anything else (MongoDB, Elasticsearch, REST APIs, …) is reachable through locally-executed Python models. Details per adapter: getdvt.net/docs/adapters.

Learn more

License

DVT is distributed as compiled wheels on PyPI. Free tier covers local files and transactional databases; Pro adds cloud buckets and Python models; Max adds cloud warehouses. See getdvt.net/pricing.

Project details


Download files

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

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

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

dvt_core-0.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (9.0 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dvt_core-0.2.4-cp312-cp312-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

dvt_core-0.2.4-cp312-cp312-macosx_10_15_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.12macOS 10.15+ x86-64

dvt_core-0.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (9.3 MB view details)

Uploaded CPython 3.11manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dvt_core-0.2.4-cp311-cp311-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 11.0+ ARM64

dvt_core-0.2.4-cp311-cp311-macosx_10_15_x86_64.whl (1.7 MB view details)

Uploaded CPython 3.11macOS 10.15+ x86-64

dvt_core-0.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl (8.8 MB view details)

Uploaded CPython 3.10manylinux: glibc 2.17+ x86-64manylinux: glibc 2.28+ x86-64

dvt_core-0.2.4-cp310-cp310-macosx_11_0_arm64.whl (1.7 MB view details)

Uploaded CPython 3.10macOS 11.0+ ARM64

dvt_core-0.2.4-cp310-cp310-macosx_10_15_x86_64.whl (1.8 MB view details)

Uploaded CPython 3.10macOS 10.15+ x86-64

File details

Details for the file dvt_core-0.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 720e72e3a897deb101394685e975edbe26acab224fe204597363784a22a09ab6
MD5 45c35e28dd700d0ab73259baaaa3b54c
BLAKE2b-256 f8f6c9b8f6f50740d5a037d3912cb9b89c16565e7458ce2cc2c6f94031508962

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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

File details

Details for the file dvt_core-0.2.4-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 b0e398029d4e8a265a1eed55faee41e9602d98c6591c9e9d79813abe191bc17a
MD5 8315773be2b5460468c53d5026a987e3
BLAKE2b-256 a9fa74df1403783cd8593470161784e4f311955a9eebf34a412bbdda531ccf08

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp312-cp312-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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

File details

Details for the file dvt_core-0.2.4-cp312-cp312-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp312-cp312-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 0c874aa7ac07b67425300575077201f6bc27e7c26e029e021f2b79a3628e2a8b
MD5 ca1b39ae89ac79bb02a479d10a641d9e
BLAKE2b-256 bed502cbf5fb4350763667d88cc06ef7fd8952caa6cbbdfba811767e372cc7d8

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp312-cp312-macosx_10_15_x86_64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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

File details

Details for the file dvt_core-0.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 8a0bcd2192efec053e8385c148cbd032eebda576b41dd584cdf950f9413f5553
MD5 592cd3a02a8a3805f32b14034b10988b
BLAKE2b-256 24d23988b352659332f0b605bd5400246c9ce0681601733520418d35f8bfd8a4

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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

File details

Details for the file dvt_core-0.2.4-cp311-cp311-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp311-cp311-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 a34989dd5134ba620c220506ff53acd02af87583518194985d6088a82c3725dc
MD5 3b4bd12c962c680e6b40aa6f43182484
BLAKE2b-256 dd0a348acb37f8d2f3137e445fa942e5ed646fcc07cce1bb701e87e62ab6be91

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp311-cp311-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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

File details

Details for the file dvt_core-0.2.4-cp311-cp311-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp311-cp311-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 9575c4c89abaf15ec9c107cdc77262ee6bc457fc12affea1b2dac13495bbef58
MD5 5923d449dd7e6d3e7251ca5778e49750
BLAKE2b-256 46c6c7425719f28a0243e4b4690c1d9dbe771c30da692a221d05fc46e737c181

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp311-cp311-macosx_10_15_x86_64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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

File details

Details for the file dvt_core-0.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 9af8b787000429b905df607460d8f0a907056443d1205a48445042e1b602fcfe
MD5 924bc9a9af1b0bdbd12451175247695f
BLAKE2b-256 3595107663a93c1f3941de74bbbe8e04db7bb5ee97a0b5f6c21f2c14138c3b36

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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

File details

Details for the file dvt_core-0.2.4-cp310-cp310-macosx_11_0_arm64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp310-cp310-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 f288a4d67bb65fe3cde1caf7686f80a16cff708897934ef02afe487ea9b15a56
MD5 7865d719013756115bd7804ffbf5564e
BLAKE2b-256 8ecd8e11842c3851720cf10fb5fef8119b898335631d3e9c9bef6937d08a76fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp310-cp310-macosx_11_0_arm64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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

File details

Details for the file dvt_core-0.2.4-cp310-cp310-macosx_10_15_x86_64.whl.

File metadata

File hashes

Hashes for dvt_core-0.2.4-cp310-cp310-macosx_10_15_x86_64.whl
Algorithm Hash digest
SHA256 7bbb4cf7382afbe2f96db6f67470d6d85a58cc91c6a0b0c7791aeceb4ddea27a
MD5 ae0ae53d0b52a2add04d052fabc4df51
BLAKE2b-256 4e05fd8e0043ac7b64472633acbbbcda26c487c75e1291cbf903efc32bd990cd

See more details on using hashes here.

Provenance

The following attestation bundles were made for dvt_core-0.2.4-cp310-cp310-macosx_10_15_x86_64.whl:

Publisher: build-wheels.yml on heshamh96/dvt-core

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