Skip to main content

iomete logo     dbt logo

Release Badge

dbt-iomete

The dbt-iomete package contains all the code enabling dbt to work with iomete.

This adapter is forked from the dbt-spark

Getting started

Installation

pip install dbt-iomete

Alternatively, you can install the package from GitHub with:

pip install "git+https://github.com/iomete/iomete-integrations.git#subdirectory=dbt-iomete"

Profile Setup

iomete:
  target: dev
  outputs:
    dev:
      type: iomete
      host: <host>
      port: 443
      https: true # or http
      dataplane: <iomete_dataplane>
      domain: <iomete_domain>
      lakehouse: <serverless_lakehouse_name>
      catalog: <catalog_name>
      schema: <database_name>
      user: "{{ env_var('DBT_IOMETE_USER_NAME') }}"
      token: "{{ env_var('DBT_IOMETE_TOKEN') }}"
      # optional: parallelism for listing relations in a schema (default 100)
      list_relations_threads: 100

list_relations_threads controls how many relations dbt describes in parallel when it lists a schema (via describe extended). It is independent of the global threads setting used to build models, so you can keep threads low while still listing schemas with many tables quickly. It defaults to 100; lower it if the data plane is under load, or omit it entirely to use the default.

Incremental strategies

IOMETE incremental models use Iceberg tables. Choose a strategy with the incremental_strategy config:

Strategy Behavior
merge (default) Updates rows that match the unique_key and inserts new rows.
append Inserts every row from the current run without changing existing rows.
delete+insert Deletes rows that match the current run's unique_key values, then inserts every row from the current run.
insert_overwrite Replaces the affected partitions, or the whole table when partition_by is not set.

Use delete+insert for duplicate keys

Use delete+insert when one run can return several rows with the same unique_key. Spark rejects those rows during a merge, but delete+insert keeps them. If you omit unique_key, this strategy behaves like append.

The delete and insert are separate statements, so the operation is not atomic. If the insert fails after the delete succeeds, rerun the model or perform a full refresh to restore the missing rows. Also note that incremental_predicates apply only to the delete. The insert still writes every row from the current run.

Replace partitions with insert_overwrite

Use insert_overwrite when each run returns the complete contents of every partition it updates. Rows already stored in an affected partition are removed, even if the current model result does not contain replacements for them.

For example, this model replaces only the calendar days returned by the current run:

{{ config(
    materialized='incremental',
    incremental_strategy='insert_overwrite',
    partition_by='days(event_time)'
) }}

select event_id, event_time, payload
from {{ ref('events') }}
{% if is_incremental() %}
where event_time >= current_date() - interval 1 day
{% endif %}

Partitions absent from the result stay unchanged. Iceberg hidden partition transforms such as days(event_time) and bucket(16, event_id) are supported. If you omit partition_by, the current result replaces every row in the target table.

The overwrite is one atomic Iceberg operation. Values map to target columns by name rather than source position, and a target column missing from the current model result receives NULL.

For more information, consult the docs.

Metadata

Release files for dbt-iomete 1.8.3

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-iomete 1.8.3
File Size Uploaded Provenance
dbt_iomete-1.8.3.tar.gz 25.0 kB Without provenance Details

Release files / dbt_iomete-1.8.3.tar.gz

Download URL dbt_iomete-1.8.3.tar.gz
Size 25.0 kB
Tags Source
SHA-256 checksum
How to use checksums
335dd289809f8fabf11c90eec4e5073f67c4980edde7f0d07c399e6a613f0bbb
BLAKE2b-256 checksum
How to use checksums
1a5e261a8bdcb5581db2ffb68a9144a221f100c1252acd256f2c0d0925795585
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.14

Security for dbt-iomete 1.8.3

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

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