Skip to main content
Pre-release

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)

Source distribution for dbt-lakecompute 0.1.0.dev2
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)

Table of built distributions (wheels) for dbt-lakecompute 0.1.0.dev2
File Interpreter ABI Platform Actions
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 log

Release 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 log

Security 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.

Select from 2 files

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 log

A 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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page