0
0
DbtConceptBeginner · 3 min read

What is profiles.yml in dbt: Purpose and Usage Explained

In dbt, profiles.yml is a configuration file that stores your database connection details securely. It tells dbt how to connect to your data warehouse by specifying credentials, target environments, and connection settings.
⚙️

How It Works

Think of profiles.yml as the address book for dbt to find and connect to your database. Instead of hardcoding connection details inside your project, dbt uses this separate file to keep sensitive information like usernames and passwords safe and organized.

When you run dbt commands, it looks into profiles.yml to know which database to talk to, which schema to use, and what credentials to provide. This separation helps you manage multiple environments, like development and production, by switching targets without changing your project code.

💻

Example

This example shows a simple profiles.yml setup for a PostgreSQL database with two targets: dev and prod.

yaml
my_project:
  target: dev
  outputs:
    dev:
      type: postgres
      host: localhost
      user: my_user
      password: my_password
      port: 5432
      dbname: my_database
      schema: dev_schema
    prod:
      type: postgres
      host: prod.db.server
      user: prod_user
      password: prod_password
      port: 5432
      dbname: prod_database
      schema: prod_schema
🎯

When to Use

You use profiles.yml whenever you want dbt to connect to a database. It is essential for setting up your project to run models, tests, and analyses.

It is especially useful when you have multiple environments like development, testing, and production. You can define different connection details for each environment and switch between them easily by changing the target.

For example, a data analyst working on new models can use the dev target to avoid affecting live data, while the production target runs scheduled jobs on the main database.

Key Points

  • profiles.yml stores database connection info outside your dbt project.
  • It supports multiple targets for different environments.
  • Helps keep sensitive credentials secure and separate from project code.
  • Essential for running dbt commands that interact with your data warehouse.

Key Takeaways

profiles.yml holds your database connection settings for dbt.
It allows easy switching between environments like dev and prod.
Keeps sensitive info separate from your project code for security.
dbt reads this file to know how and where to connect to your data warehouse.