Skip to main content

dbt Configuration Reference

For installation and a complete starter profile, see Getting Started with dbt.

Available Since identifies the first published dbt-iomete version that supports a setting. When a setting gained new values later, its description identifies the newer version.

Profile Settings

Add connection settings under an IOMETE output in ~/.dbt/profiles.yml.

SettingAvailable SinceRequiredDefaultDescription
type1.0.0YesAdapter type. Set this to iomete.
host1.0.0YesIOMETE hostname without the protocol (e.g., example.iomete.com).
port1.0.0No443IOMETE port.
https1.7.0NotrueUses HTTPS when true and HTTP when false.
dataplane1.7.3YesIOMETE namespace/data plane name (e.g., iomete-system).
domain1.7.4YesIOMETE domain name (e.g., analytics).
lakehouse1.1.0YesCompute cluster name.
catalog1.7.7Nospark_catalogDefault catalog. The adapter also accepts database as the underlying dbt field name.
schema1.0.0YesDefault database or schema where dbt creates objects. The value cannot contain a period.
user1.0.0YesIOMETE username.
token1.4.0YesPersonal access token. Use an environment variable instead of storing the token in the profile.
threads1.0.0No1Maximum number of dbt model tasks that can run concurrently.
connect_retries1.0.0No0Number of times to retry a failed connection.
connect_timeout1.0.0No120Seconds to wait between connection attempts when retries are enabled.
retry_all1.0.0NofalseRetries every connection error when true. Otherwise, retries apply only to errors reported as pending or temporarily unavailable.
list_relations_threads1.8.2No100Maximum concurrent DESCRIBE EXTENDED queries used while listing relations. This does not change model-build concurrency.

Use list_relations_threads to tune metadata listing separately from model execution. Lower it if relation discovery creates too much load on the data plane:

~/.dbt/profiles.yml
dbt_project:
target: dev
outputs:
dev:
type: iomete
# Other connection settings omitted
threads: 4
list_relations_threads: 25
connect_retries: 2
connect_timeout: 30
retry_all: false

Model Settings

Set model configuration in a model's config() block or under models in dbt_project.yml.

SettingAvailable SinceApplies toDefaultDescription
materialized1.0.0SQL and Python modelsviewMaterialization type. IOMETE supports view, table, and incremental for SQL models, and table and incremental for Python models. Because the default is view, set this explicitly in every Python model.
file_format1.0.0SQL tables and incremental modelsicebergSpark table provider. Incremental models require iceberg.
location_root1.0.0SQL tablesRoot storage location. The adapter appends the model alias to this path.
partition_by1.0.0SQL tables and incremental modelsColumn name or list of columns used to partition the table.
clustered_by1.0.0SQL tablesColumn name or list of columns used to cluster the table. Set buckets with it.
buckets1.0.0SQL tablesNumber of buckets used with clustered_by. The adapter emits the clustering clause only when both settings are present.
options1.0.0SQL tablesMapping of Spark data source option names to values.
tblproperties1.7.9SQL tables, views, snapshots, and seedsMapping of Spark table property names to values, applied when the relation is created.
persist_docs1.0.0Tables and viewsPersists relation descriptions and, for Iceberg tables, column descriptions.

This example creates a partitioned Iceberg table with table properties:

models/events.sql
{{
config(
materialized='table',
file_format='iceberg',
partition_by=['event_date'],
tblproperties={
'write.format.default': 'parquet'
}
)
}}

select *
from raw.events

Incremental Model Settings

Incremental models support the following additional settings. See Incremental Models for behavior, constraints, and examples.

SettingAvailable SinceDefaultDescription
incremental_strategy1.0.0mergemerge and append are available from 1.0.0; delete+insert and insert_overwrite are available from 1.8.3.
unique_key1.0.0Column name or list of columns that identifies target rows for merge or delete+insert. Lists containing multiple columns are available from 1.7.7. Without a key, both strategies insert every source row.
on_schema_change1.0.0ignoreControls how dbt handles source and target column differences. Supports ignore, fail, append_new_columns, and sync_all_columns.
incremental_predicates1.7.9List of predicates that limits target rows considered by merge or deleted by delete+insert. predicates is an alias.
merge_update_columns1.0.0All columnsList of columns to update when a row matches.
merge_exclude_columns1.7.7List of columns to exclude from matched-row updates. Do not combine this with merge_update_columns.

Python Model Settings

Python models run through an existing IOMETE Spark job and always write Iceberg tables. SQL-only table settings such as location_root, clustered_by, and options do not apply.

SettingAvailable SinceRequiredDefaultDescription
spark_job_id1.7.1YesID of the IOMETE Spark job used to run the compiled Python model.
spark_job_overrides1.7.1No{}Per-run overrides containing arguments, envVars, or sparkConf.

Replace YOUR_SPARK_JOB_ID with the ID of an existing IOMETE Spark job:

models/my_python_model.py
def model(dbt, spark):
dbt.config(
materialized="table",
spark_job_id="YOUR_SPARK_JOB_ID",
spark_job_overrides={
"arguments": ["--environment", "production"],
"envVars": {"LOG_LEVEL": "INFO"},
"sparkConf": {"spark.sql.shuffle.partitions": "200"},
},
)

return dbt.ref("source_model")