Configure dbt’s Postgres adapter so models run directly against a ParadeDB instance.
dbt automates SQL transformations, while ParadeDB adds vector search and full-text power on top of PostgreSQL. Wiring them together lets analytics and ML teams ship feature-rich models through a single workflow.
profiles.yml
?Point dbt’s built-in postgres
adapter at your ParadeDB host. Supply hostname, port, database, user, and schema exactly as you would any Postgres database.
profiles.yml
exampleparadedb:
target: dev
outputs:
dev:
type: postgres # ParadeDB speaks the Postgres protocol
host: localhost # or parade.company.com
port: 5432
user: parade_user
password: env_var(DBT_DB_PASSWORD)
dbname: parade_db # default database
schema: analytics # where dbt will create models
threads: 4 # parallelism
keepalives_idle: 0 # optional network tuning
Run dbt debug --target dev
. dbt opens a session, checks permissions, and confirms ParadeDB extensions such as pgvector
are accessible.
Add SQL models under models/
, then execute dbt run
. dbt compiles each model to Postgres-compatible SQL and ships it to ParadeDB.
models/customer_ltv.sql
select
c.id as customer_id,
c.name,
sum(o.total_amount) as lifetime_value
from {{ ref('Customers') }} c
join {{ ref('Orders') }} o on o.customer_id = c.id
group by 1,2;
Enable needed extensions (CREATE EXTENSION pgvector;
) in a migration before dbt runs. Pin dbt to a Postgres version supported by your ParadeDB build. Use incremental models for large vector tables to avoid full reloads.
Missing extension: dbt fails if a model uses vector
types but pgvector
is not installed. Create it once per database.
Wrong adapter: Setting type: paradedb
throws an error—use type: postgres
instead because ParadeDB speaks the Postgres wire protocol.
No. Use the built-in Postgres adapter because ParadeDB is protocol-compatible.
Yes. Declare an incremental model and ensure your unique_key
covers the vector column if updates are expected.
Create multiple outputs under one profile—dev, staging, prod—each pointing to a different ParadeDB instance. Switch with --target
.