This release is a pre-release and may not be stable for production use.
dbt-lakecompute
The lake compute (dbt Compute) adapter plugin for dbt-core.
Lake compute is a remote query service whose workers run DuckDB over Iceberg tables and accept DuckDB-dialect SQL.
The adapter is under active development. dbt debug, dbt compile, dbt show, dbt run
(tables, incremental and ephemeral models), dbt seed and dbt test work.
Supported and unsupported features
dbt debug, dbt compile, dbt show, dbt run, dbt seed, dbt test |
supported |
materialized='table' |
supported: built with a single create or replace table ... as (...) |
materialized='ephemeral' |
supported: inlined as a CTE, as everywhere else in dbt |
| Model contracts | columns and types are checked; constraints cannot be emitted: a create ... as (<query>) has no column list to attach them to, so each declared constraint warns and is skipped |
dbt seed |
supported: an existing table is truncated and reloaded (--full-refresh drops and recreates it), and rows are inserted as literal insert ... values batches of at most 500 rows or 1 MB. Whole-number columns are inferred as bigint. A load is not atomic: the service has no transactions, so a seed that fails part-way leaves its table empty or partly loaded until it is re-run |
materialized='incremental' |
supported, strategies append (the default) and insert_overwrite. append sends insert into ... by name (...) to an existing table; a first run, --full-refresh and insert_overwrite rebuild with create or replace table. insert_overwrite replaces the whole table: there is no partition scoping, so is_incremental() is always false for it and the model must select its complete dataset. Other strategies (merge, delete+insert, microbatch) fail when run, with an error naming the model. on_schema_change is applied before an append, as on dbt's default, with one difference: a column's type is never changed in place. fail fails on any added, missing or retyped column; append_new_columns adds new columns (and, on a contracted model, fails on a type change rather than casting to the old type); sync_all_columns adds new columns and, once the append has succeeded, drops missing ones (so an incremental filter can still read them from {{ this }}), and fails on a type change. Use --full-refresh to change a type. With ignore, columns are matched by name: a column the model stops selecting is inserted as NULL, and one the table lacks fails the run. Like seeds, an append is not atomic |
dbt docs generate |
not yet implemented |
materialized='view' |
not supported: the catalog does not grant CreateView, so it fails when run, with an error naming the model. dbt defaults models to views, so set +materialized: table in dbt_project.yml |
materialized='materialized_view', snapshots, dbt clone, dbt unit tests |
out of scope: each fails when run, with an error naming the model |
| Python models | out of scope: no materialization accepts Python, so dbt rejects them |
catalogs.yml |
out of scope |
persist_docs |
ignored, as in v2: the service rejects comment on for Iceberg relations, so no comments are written |
| Grants | ignored, as in v2: configured grants are not applied |
| Relation renames | not used: relations are replaced with create or replace |
| Dropping a schema | drops its relations first: the service does not support DROP SCHEMA ... CASCADE |
Identifiers are never quoted, matching the service's own SQL, and are matched
case-insensitively: a relation created as MixedCase is found by ref('mixedcase') and still
renders as MixedCase.
Profile
method defaults to token, which reads token — a service bearer token. For a Fivetran
personal access token (a dct_ PAT) use method: fivetran and fivetran_credential instead:
a PAT is exchanged for a session rather than sent as a bearer token, so method: token with a
PAT fails with 401 invalid token.
Always supply auth material through an environment variable, never inline.
my_project:
target: dev
outputs:
dev:
type: lakecompute
database: my_database
schema: my_schema
method: fivetran
fivetran_credential: "{{ env_var('DBT_COMPUTE_AUTH_TOKEN') }}"
# optional; falls back to $DBT_COMPUTE_BASE_URL, then the public endpoint
base_url: https://api.lake-compute.fivetran.com/
With a bearer token, the last two auth lines become:
method: token # the default, so it can be omitted
token: "{{ env_var('DBT_COMPUTE_AUTH_TOKEN') }}"
Set DBT_COMPUTE_AUTH_TOKEN to whichever credential you are using. The ADBC driver is fetched
automatically; see Driver below. Run dbt debug to check the connection.
Driver
The adapter needs a closed-source ADBC shared library, which is not published to PyPI. It
downloads it from dbt's public CDN the first time a connection is opened and caches it
at {cache_dir}/com.getdbt/adbc/{arch}-{os}/, so a machine that already has it downloads
nothing. Later runs only stat the file.
The driver version is pinned, and every platform artifact is verified against a pinned
SHA-256. A platform with no pinned checksum is refused rather than installed unverified.
Both live in install.py.
| Variable | Purpose |
|---|---|
DBT_COMPUTE_DRIVER_CACHE |
Use this directory instead of the OS cache directory. For CI images and air-gapped installs that pre-populate the cache. |
Set driver_path in the profile to bypass the download entirely — for a locally built driver,
or a platform with no prebuilt artifact.
Connection settings
| Setting | Default | Notes |
|---|---|---|
database |
— | Required. The catalog to connect to |
schema |
— | Required. The default schema |
method |
token |
One of token, api_key, okta_browser, fivetran. Set explicitly to fivetran for a dct_ PAT |
token |
— | Required with method: token; a service bearer token |
api_key |
— | Required with method: api_key |
fivetran_credential |
— | Required with method: fivetran; a dct_ PAT |
fivetran_auth_url |
service default | Override the PAT exchange endpoint |
okta_auth_url, okta_token_url, okta_client_id |
service defaults | Optional with method: okta_browser, which needs no pre-shared secret |
base_url |
public endpoint | profile → $DBT_COMPUTE_BASE_URL → default |
driver_path |
— | Override the driver library path; skips the CDN download. See Driver |
warehouse, dialect |
— | passed through as adbc.dbt.* |
timeout_seconds |
— | passed through |
retries |
1 |
connection retry attempts |
query_comment_enabled |
false |
dbt's query comment is off by default |
Development
cd dbt-lakecompute
hatch run setup
hatch run code-quality
hatch run unit-tests
hatch run integration-tests
Unit tests need no endpoint. Never commit test.env.
The functional suite runs against a live endpoint. Copy test.env.example to test.env. It needs
DBT_COMPUTE_BASE_URL, DBT_COMPUTE_AUTH_TOKEN and DBT_COMPUTE_DATABASE; the tests skip
without them. DBT_COMPUTE_AUTH_METHOD selects the auth method (fivetran by default; set token
for a plain bearer token). Set DBT_COMPUTE_SCHEMA as well to build everything in one named
scratch schema rather than a generated name per test file — useful against a shared catalog,
and it makes leftovers easy to find if a run is interrupted. Pinning the schema means test
classes cannot run in parallel, so pass -n0 with it. Every statement is a full round trip at
3–15 seconds, so a run of the whole functional suite takes tens of minutes.
Metadata
Release files for dbt-lakecompute 0.1.0.dev2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| dbt_lakecompute-0.1.0.dev2.tar.gz | 67.9 kB | With provenance | Details for dbt_lakecompute-0.1.0.dev2.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| dbt_lakecompute-0.1.0.dev2-py3-none-any.whl | Python 3 | none | any | Details for dbt_lakecompute-0.1.0.dev2-py3-none-any.whl |
Total release size: 112.5 kB
Release files / dbt_lakecompute-0.1.0.dev2.tar.gz
| Download URL | dbt_lakecompute-0.1.0.dev2.tar.gz |
|---|---|
| Size | 67.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
62ea9def4b9e3873d20af0ad08956e569a08eae1d672a558ab3f54e0a128393f
|
|
BLAKE2b-256 checksum How to use checksums |
787036406329d5a19421adb11dcda676dba674e50accae23724bfeb7155b9389
|
| 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 Oct 30, 2026.
Transparency logRelease files / dbt_lakecompute-0.1.0.dev2-py3-none-any.whl
| Download URL | dbt_lakecompute-0.1.0.dev2-py3-none-any.whl |
|---|---|
| Size | 44.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0b8534983299b3afafacf95f064b0a04332032ed77393692312fe3cfabd2ef39
|
|
BLAKE2b-256 checksum How to use checksums |
7ab5329d967bbf5fdc6da451f0a40f0d7801fff1cdc2b1faf7ab11a6de8d3f6c
|
| 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 Oct 30, 2026.
Transparency logSecurity for dbt-lakecompute 0.1.0.dev2
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.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for dbt_lakecompute-0.1.0.dev2.tar.gz
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 Oct 30, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.