Skip to main content

dbt-embrasure

Initial dbt Core 1.11 adapter for the Embrasure warehouse. Your Git project and runner stay with you. Queries go through Embrasure's public API; no AWS credentials, physical Glue names, storage paths, or backend imports are needed.

Install and connect

Install the pinned adapter:

python -m pip install 'dbt-embrasure==0.1.0'

The product repository is private; customers do not need repository access. Maintainers working from a checkout can install locally:

python -m pip install ./packages/dbt-embrasure

Create a warehouse and target database in Embrasure first. Use a workspace-scoped API token with write scope (which includes read), owned by an editor or higher. Personal access tokens are disabled by default; a workspace admin must enable them before creating an expiring token through the signed-in app. The adapter also accepts a valid short-lived session bearer token but does not refresh it. The existing workspace/token policies still apply. Never commit the token.

In ~/.dbt/profiles.yml:

embrasure:
  target: dev
  outputs:
    dev:
      type: embrasure
      endpoint: https://api.embrasure.ai
      workspace_id: "{{ env_var('EMBRASURE_WORKSPACE_ID') }}"
      token: "{{ env_var('DBT_ENV_SECRET_EMBRASURE_TOKEN') }}"
      database: analytics_dev
      schema: default
      threads: 4
      query_timeout: 1800

Set profile: embrasure in dbt_project.yml. Run dbt debug, then dbt build. The warehouse API support is deployed. Use dbt Core 1.11 and Python 3.10–3.13 (Python 3.12 recommended). dbt Cloud/Fusion are not supported by this initial package.

See the customer quickstart for separate dev/prod profiles, credential rotation, and a scheduled GitHub Actions example.

Sources and environments

Use the logical identifiers shown in Embrasure's catalog:

version: 2
sources:
  - name: crm
    database: raw
    schema: salesforce
    tables:
      - name: account

{{ source('crm', 'account') }} reads raw.salesforce.account. Model outputs use analytics_dev.default.<model>. Use distinct databases for dev, CI and production; custom output schemas and schema creation/deletion are not supported. Ingestion destinations and managed-pipeline-owned outputs cannot be mutated through this API.

Supported scope

  • SQL tables (managed Iceberg), views, and ephemeral models.
  • CSV seeds with bounded INSERT batches, generic/singular data tests, and docs generation.
  • Incremental append (default) and merge with a required unique_key.
  • Standard ref, source, Jinja, packages, and SQL hooks, subject to the warehouse's supported SQL dialect and operations. Cross-engine SQL/macros may need changes.
  • Query polling, cancellation, typed paginated results, and catalog discovery.
{{ config(materialized='incremental', incremental_strategy='merge', unique_key='id') }}
select id, updated_at from {{ source('crm', 'account') }}
{% if is_incremental() %}
where updated_at > (select max(updated_at) from {{ this }})
{% endif %}

Use --full-refresh for schema changes. Automatic schema evolution, snapshots, Python models, enforced contracts, SQL grants, persist_docs, relation renaming, and multi-statement transactions are not supported. on_schema_change currently accepts only ignore; incompatible writes fail in the engine. Hooks autocommit.

Table rebuilds and seeds drop/recreate their destination; they are not atomic. A failed rebuild can leave a missing or partially populated table. Views can be replaced in place. Do not run overlapping jobs against the same outputs. Seed data is written as SQL literals, so do not put secrets in seeds; SQL appears in query history.

Scheduling and failure handling

Run dbt from your CI, cron, Airflow, Dagster, or another runner that can install this package. Store the token in its secret manager. The runner owns schedules, dependencies, job concurrency, retries, and notifications. Embrasure owns query authorization, storage, catalog reconciliation, query history, and query limits.

For unattended runs, a workspace admin must create an expiring PAT through the signed-in app with write scope (no admin scope). Keep the creating user at editor or higher. Tokens apply to the workspace, not just the configured output database. Do not rely on a short-lived CLI session for a schedule: this adapter does not refresh credentials. Replace the runner secret before expiration, verify the new token in dev, let old-token jobs finish, then revoke the old token.

query_timeout defaults to 1800 seconds; the server allows at most 3600 seconds per query and retains its scan cap. The HTTP request timeout is 30 seconds. There are no automatic query-submission retries: after a lost response, inspect query history before retrying, especially for append operations. Query failures include the public query ID. Ctrl-C and local query timeouts request cancellation; server-side timeout enforcement remains in effect if the runner disappears.

Development and verification

uv sync --project packages/dbt-embrasure --frozen
uv run --project packages/dbt-embrasure --frozen pytest -q packages/dbt-embrasure/tests
uv build --project packages/dbt-embrasure

CI installs the locked package into the API test environment and runs a real dbt project through FastAPI, the logical SQL planner, and a local SQL engine replacing AWS. The example in examples/jaffle_shop is also the live smoke project:

dbt build --project-dir packages/dbt-embrasure/examples/jaffle_shop \
  --profiles-dir packages/dbt-embrasure/examples/jaffle_shop

Use a disposable target database for live tests. Local tests do not establish live Athena compatibility. Maintainers use the manual Publish dbt adapter workflow and the release runbook at docs/dbt-release.md in the product repository. It tests installed wheels before an environment-approved PyPI publication; publishing the adapter does not deploy the API.

Download files

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

Source Distribution

dbt_embrasure-0.1.0.tar.gz (11.2 kB view details)

Uploaded Source

Built Distribution

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

dbt_embrasure-0.1.0-py3-none-any.whl (12.7 kB view details)

Uploaded Python 3

File details

Details for the file dbt_embrasure-0.1.0.tar.gz.

File metadata

  • Download URL: dbt_embrasure-0.1.0.tar.gz
  • Upload date:
  • Size: 11.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dbt_embrasure-0.1.0.tar.gz
Algorithm Hash digest
SHA256 360e905690835ec5e6b50cc49df55249f05e55b2b8daaa72e6e70efc77f7db1d
MD5 59c05f2ea96cfb0f3f7b0609b0e28ecd
BLAKE2b-256 58167e4269f6acd429ffabaa3e1c0c4e62c01c9ea54b116352baf695654d6432

See more details on using hashes here.

File details

Details for the file dbt_embrasure-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: dbt_embrasure-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 12.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for dbt_embrasure-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 43caa8fae6ab96cacdca4f171ff5170a1326fd497c60beefc9f94592af14a68f
MD5 351d4defd31361d9c2565f8a64cfa971
BLAKE2b-256 c525622d6eb4b6c8f715db5e1331ac56050cd2f45e1a76d7f4ac7c17823214de

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 files

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