Course contentsShow
← Data Engineering
Lesson 316 of 8255. Batch ETL/ELT Pipelines with dbtFree lesson

Configuring Database Connection Profiles

You will authenticate your dbt environment by mapping local profiles to your data warehouse credentials for secure project execution.

In this lesson, you will learn how to bridge your local development environment to your data warehouse by configuring secure connection profiles in dbt.

The Role of Profiles

When you initialize a dbt project, you create a codebase that needs to talk to your data warehouse to execute transformations. However, you should never hard-code sensitive credentials—like usernames, passwords, or account identifiers—directly into your project files. Instead, dbt uses a profiles.yml file, typically located in your hidden ~/.dbt/ directory, to act as a secure intermediary.

This configuration file maps your local project to a specific "target," which contains the necessary authentication details for your database. By separating these credentials from your project code, you can safely version-control your logic without ever accidentally sharing your access keys.

Configuring Your Connection

To set this up, you define a profile that specifies the type of adapter (e.g., Snowflake, BigQuery, or Postgres) and the required credentials. Here is a simplified example of how you might map your environment:

my_dbt_project:
  target: dev
  outputs:
    dev:
      type: snowflake
      account: your_account_locator
      user: your_username
      password: your_secure_password
      role: transformer_role
      database: analytics_db
      warehouse: compute_wh
      schema: dev_user_name

In this block, the target identifies which connection to use by default. When you run a command like dbt run, dbt looks at your project file, sees the project name, references the corresponding entry in your profiles.yml, and uses those credentials to authenticate your session with the data warehouse.

This configuration allows you to maintain multiple environments—such as dev, staging, and prod—within the same file. You can simply switch between them using the --target flag in your terminal, ensuring your code remains portable while your security remains isolated from your transformation logic.

Key Takeaway: Connection profiles decouple your sensitive authentication credentials from your project code, allowing you to securely manage and switch between different database environments during your ETL execution.