Postgres Profile
Profile Configuration
Postgres targets should be set up using the following configuration in your profiles.yml
file.
company-name:target: devoutputs:dev:type: postgreshost: [hostname]user: [username]password: [password]port: [port]dbname: [database name]schema: [dbt schema]threads: [1 or more]keepalives_idle: 0 # default 0, indicating the system defaultconnect_timeout: 10 # default 10 secondssearch_path: [optional, override the default postgres search_path]role: [optional, set the role dbt assumes when executing queries]sslmode: [optional, set the sslmode used to connect to the database]
Configurations
search_path
The search_path
config controls the Postgres "search path" that dbt configures when opening new connections to the database. By default, the Postgres search path is "$user, public"
, meaning that unqualified table names will be searched for in the public
schema, or a schema with the same name as the logged-in user. Note: Setting the search_path
to a custom value is not necessary or recommended for typical usage of dbt.
role
The role
config controls the Postgres role that dbt assumes when opening new connections to the database.
sslmode
The sslmode
config controls how dbt connectes to Postgres databases using SSL. See the Postgres docs on sslmode
for usage information. When unset, dbt will connect to databases using the Postgres default, prefer
, as the sslmode
.
Postgres notes
While Postgres works reasonably well for datasets smaller than about 10mm rows, database tuning is sometimes required. Make sure to create indexes for columns that are commonly used in joins or where clauses.