To set up dbt (Data Build Tool) for using Postgres locally, you need to:
- Install dbt on your local machine.
- Create a dbt project.
- Configure the dbt project to connect to your local Postgres database.
- Run dbt commands to test the setup.
Here are the detailed steps:
You can install dbt using pip:
pip install dbt-postgres
This will install both dbt-core
and its plugin dbt-postgres
:
$ dbt --version
installed version: 1.0.0
latest version: 1.0.0
Up to date!
Plugins:
- postgres: 1.0.0
Navigate to the directory where you want to create your dbt project and run the following command:
dbt init my_dbt_project
Replace my_dbt_project
with the name of your project.
Navigate to the project directory:
cd my_dbt_project
Open the profiles.yml
file located in the ~/.dbt
directory (create it if it doesn't exist) and add the following configuration:
my_dbt_project:
target: dev
outputs:
dev:
type: postgres
host: localhost
user: postgres
password: postgres
port: 5433 # This should match the port mapping in your docker-compose file for the postgres_dbt container
dbname: nyc_taxi
schema: public
You can now run dbt commands to test the setup. For example, to run the dbt debug command to test the connection:
dbt debug
If the connection is successful, you can start developing your dbt models. Here are some common dbt commands:
dbt run
: Compile and run the models in your project.dbt test
: Run tests on your data.dbt docs generate
: Generate documentation for your project.dbt docs serve
: Serve the documentation locally.
Create a simple dbt model to test the setup. Create a file named example_model.sql
in the models
directory of your dbt project with the following content:
-- models/example_model.sql
SELECT *
FROM {{ ref('my_table') }}
Replace my_table
with the name of a table in your Postgres database.
Run the dbt model:
dbt run
This will execute the SQL in example_model.sql
and create a table/view in the Postgres database.
By following these steps, you will have dbt set up to work with your local Postgres database using Docker.
what are the differences between
dbt run
vsdbt build
commands?The
dbt run
anddbt build
commands are both used to execute models in a dbt project, but they have different scopes and functionalities. Here are the key differences:dbt run
dbt run
command is used to compile and run the models in your dbt project. It executes the SQL in the models and materializes them as tables or views in your data warehouse.models
directory).dbt run
when you want to build or refresh your dbt models.dbt build
dbt build
command is a more comprehensive command that not only runs the models but also executes tests, seeds, and snapshots.dbt run
,dbt test
,dbt seed
, anddbt snapshot
.dbt build
when you want to build the entire project, including running tests, seeds, and snapshots, in addition to running the models.Summary of Differences
dbt run
dbt build
run
,test
,seed
,snapshot
Example Commands
Running Models Only
Building the Entire Project
By understanding these differences, you can choose the appropriate command based on your needs, whether it's to build just the models or to build and test the entire project.