Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Specify target in dbt model based on the folder location

Tags:

dbt

DBT newbie here!

I am building a multiaccount dbt project and I don't know how I can make the target depend on the folder where each model is located.

This is my desired folder configuration:

└───models
    ├───account1
    │   ├───DB1
    │   │   └───SCHEMA1
    │   ├───DB2
    │   │   ├───SCHEMA2
    │   │   └───SCHEMA3
    │   └───DB3
    │       └───SCHEMA4
    └───account2
        ├───DB4
        │   └───SCHEMA5
        └───DB5
            ├───SCHEMA6
            └───SCHEMA7

I have configured in profiles.yml a dev profile with two targets: account1 and account2. How can I get DBT to run models in account1 folder using account1 as target and models in account2 folder using account2 target?

I have accomplished it by running:

dbt run --models account1 --target account1
dbt run --models account2 --target account2

But is there a better way to do this? I would like to avoid having to run two consequent runs.

I've also seen it is recommended to split the repo into two, but I would really like to keep the mono-repo approach.

like image 851
Llus Avatar asked Oct 31 '25 05:10

Llus


1 Answers

You can specify the models you want to run as a path (https://docs.getdbt.com/reference/node-selection/syntax#examples). The --target option is used to tell dbt which profile you want to use when running a job and has nothing to do with the models you want executed.

dbt run -s path:models/account1
dbt run -s path:models/account2

You can also configure this through a selector. Create a file called selectors.yml in your project root directory

selectors:
  - name: foo
    definition:
      union:
        - method: path
          value: "models/account1"
        - method: path
          value: "models/account2"

Then run it with

dbt run --selector foo

Note that this approach combines both into a single run. You can split it into multiple tasks if you want them to be completely independent.

like image 197
Adam Kipnis Avatar answered Nov 04 '25 02:11

Adam Kipnis



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!