Learn how to develop your favorite dbt models in Mage.
If you get stuck, run into problems, or just want someone to walk you through these steps, please join our Slack.
Set up new Mage project
Read the setup guide to initialize a new project and start the Mage tool locally.
For the rest of this tutorial, we’ll use the project name demo_project
.
Set up dbt project
init
command (for this tutorial, we’ll
use the dbt project name demo
):For more information on creating a dbt project, read their documentation.
Create standard pipeline
+ New pipeline
and select the option labeled Standard (batch)
.Pipeline settings
icon in the left pane, and change its name
to dbt demo pipeline
, then click the Save pipeline settings
button.Create dbt profile for database connections
demo_project/dbt/demo/
.profiles.yml
.profiles.yml
file by pressing Command (⌘)
+ S
.X
button on the right side of the file
name dbt/demo/profiles.yml
.Add data loader block to pipeline
Click the + Data loader
button, select Python
, then click API
.
In the popup dialog Data loader block name
, change its name to load data
,
then click the Save and add block
button.
Paste the following code in that block:
Add dbt model block to pipeline
Under the data loader block you just added, click the button dbt model
,
then click the option Single model
.
In the file browser that pops up, click the file named
my_second_dbt_model.sql
under the folders demo/models/example/
.
This will add 2 dbt blocks to your pipeline: 1 for the dbt model named
my_first_dbt_model
and the 2nd for the dbt model named my_second_dbt_model
.
The model named my_first_dbt_model
was added to
the pipeline because my_second_dbt_model
references it.
Edit my_first_dbt_model
my_first_dbt_model
, next to the label
Target
at the top, choose dev
in the dropdown list. You can also
check Manually enter target
, and enter dev
in the input field.my_first_dbt_model
:Command
+ Enter
.Expand table
link at the bottom right corner.dbt run
command and create the table in your data source.Edit my_second_dbt_model
In the dbt block named my_second_dbt_model
, next to the label
Target
at the top, choose dev
in the dropdown list. You can also
check Manually enter target
, and enter dev
in the input field.
Paste the following SQL into the dbt model named my_second_dbt_model
:
When a dbt model depends on an upstream block that isn’t a dbt model, a source for that block is automatically added to the
demo_project/dbt/demo/models/mage_sources.yml
file.Read more about dbt sources in their documentation.
Run the dbt model block by pressing the play button on the top right of the
block or by pressing Command
+ Enter
.
You should see a preview of the query execution logs. To see the query results,
click the Expand table
link at the bottom right corner.
Add test for dbt model
Terminal
.demo_project/dbt/demo/tests/
and click the file named
test_my_second_dbt_model.sql
. If you don’t see it, refresh the page.Execute pipeline end-to-end
Click the name of the pipeline in the header breadcrumbs to go back to the detail page.
Create a new trigger with a type Schedule
and a Frequency once
.
For more details, follow these
steps.
After your trigger is created, click the Start trigger
button at the
top of the page.
The pipeline will eventually fail because a dbt test failed. This means everything is working as expected.
Open the file demo_project/dbt/demo/models/example/schema.yml
and remove
the tests named unique
under both models. Your file should look like this:
Click on the Failed
button next to the pipeline run and click
Retry run
. It should complete running successfully after a few
minutes.
Congratulations! You’ve created a data pipeline that orchestrates your dbt models.