Bird
Raised Fist0
dbtdata~5 mins

Organizing models in directories in dbt - Cheat Sheet & Quick Revision

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Recall & Review
beginner
What is the purpose of organizing models in directories in dbt?
Organizing models in directories helps keep your project tidy and easy to navigate. It groups related models together, making it simpler to manage and understand your data transformations.
Click to reveal answer
beginner
How do you create a directory structure for models in a dbt project?
You create folders inside the 'models' directory of your dbt project. Each folder can hold related SQL model files. dbt automatically recognizes these folders and their models when you run your project.
Click to reveal answer
intermediate
How does dbt handle model names when models are inside directories?
dbt uses the folder path as part of the model's unique identifier. For example, a model in 'models/sales/orders.sql' will have the name 'sales.orders'. This helps avoid name conflicts and clarifies model relationships.
Click to reveal answer
intermediate
Can you configure model properties differently for models in different directories?
Yes! You can use 'dbt_project.yml' to set configurations for all models in a directory. For example, you can set materializations or tags for every model inside a specific folder, making management easier.
Click to reveal answer
beginner
Why is it helpful to organize models by business domain or function in directories?
Organizing by domain or function groups related data transformations together. This makes it easier for teams to find, update, and understand models related to specific parts of the business, improving collaboration and maintenance.
Click to reveal answer
In dbt, where do you place folders to organize your models?
AInside the 'data' directory
BInside the 'macros' directory
CInside the 'models' directory
DInside the 'tests' directory
What does dbt use to create a unique identifier for a model inside a directory?
AThe project name
BOnly the model file name
CThe database schema
DThe folder path plus the model file name
How can you apply the same configuration to all models in a directory?
ABy setting configurations in 'dbt_project.yml' for that directory
BBy editing each model file individually
CBy creating a macro
DBy renaming the directory
Why is organizing models by business domain helpful?
AIt groups related models, making them easier to find and maintain
BIt speeds up SQL query execution
CIt automatically creates dashboards
DIt reduces the number of models needed
If you have a model at 'models/finance/revenue.sql', what is its dbt model name?
Arevenue
Bfinance.revenue
Cmodels.finance.revenue
Dfinance_revenue
Explain how organizing models in directories helps manage a dbt project.
Think about how folders help you find files on your computer.
You got /4 concepts.
    Describe how you can set configurations for all models inside a specific directory in dbt.
    Look into project-level configuration files.
    You got /4 concepts.

      Practice

      (1/5)
      1. Why is it helpful to organize dbt models into directories?
      easy
      A. It keeps the project clean and easier to manage.
      B. It makes dbt run faster.
      C. It prevents errors in SQL syntax.
      D. It automatically creates dashboards.

      Solution

      1. Step 1: Understand project organization benefits

        Organizing files into folders helps keep things tidy and easy to find.
      2. Step 2: Relate to dbt model management

        In dbt, directories group models logically, making the project easier to manage.
      3. Final Answer:

        It keeps the project clean and easier to manage. -> Option A
      4. Quick Check:

        Organizing models = easier management [OK]
      Hint: Folders group models logically for clarity [OK]
      Common Mistakes:
      • Thinking folders speed up dbt runs
      • Believing folders fix SQL errors
      • Assuming folders create dashboards automatically
      2. Which of the following is the correct way to reference a model in a subdirectory in dbt SQL?
      easy
      A. SELECT * FROM subfolder-model_name
      B. SELECT * FROM model_name.subfolder
      C. SELECT * FROM subfolder.model_name
      D. SELECT * FROM model_name

      Solution

      1. Step 1: Understand dbt model referencing

        dbt uses dot notation to reference models in subfolders: folder.model_name.
      2. Step 2: Check each option

        Only SELECT * FROM subfolder.model_name uses correct dot notation with folder before model name.
      3. Final Answer:

        SELECT * FROM subfolder.model_name -> Option C
      4. Quick Check:

        Use folder.model_name to reference subfolder models [OK]
      Hint: Use dot notation: folder.model_name [OK]
      Common Mistakes:
      • Reversing folder and model name order
      • Using hyphens instead of dots
      • Ignoring folder name when referencing
      3. Given this dbt project structure:
      models/
        sales/
          orders.sql
        marketing/
          campaigns.sql

      What is the correct way to select all columns from the orders model inside the sales folder?
      medium
      A. SELECT * FROM orders
      B. SELECT * FROM sales.orders
      C. SELECT * FROM marketing.campaigns
      D. SELECT * FROM models.sales.orders

      Solution

      1. Step 1: Identify model location

        The orders model is inside the sales folder under models.
      2. Step 2: Use correct reference syntax

        dbt references models using folder.model_name, so sales.orders is correct.
      3. Final Answer:

        SELECT * FROM sales.orders -> Option B
      4. Quick Check:

        Reference subfolder models as folder.model_name [OK]
      Hint: Use folder.model_name to select subfolder models [OK]
      Common Mistakes:
      • Omitting folder name when selecting
      • Using full path with 'models.' prefix
      • Selecting from wrong folder model
      4. You have this dbt model file path: models/finance/revenue.sql. You wrote this SQL:
      SELECT * FROM revenue

      Why might this cause an error when running dbt?
      medium
      A. Because the model should be referenced as finance.revenue.
      B. Because revenue.sql file is missing.
      C. Because SELECT * FROM revenue is invalid SQL syntax.
      D. Because dbt does not support subfolders.

      Solution

      1. Step 1: Understand model referencing in subfolders

        Models inside subfolders must be referenced with folder prefix, e.g., finance.revenue.
      2. Step 2: Identify cause of error

        Using just revenue ignores the folder, causing dbt to not find the model.
      3. Final Answer:

        Because the model should be referenced as finance.revenue. -> Option A
      4. Quick Check:

        Reference subfolder models with folder prefix [OK]
      Hint: Always prefix model with folder name in references [OK]
      Common Mistakes:
      • Assuming model name alone works in subfolders
      • Thinking SQL syntax is wrong
      • Believing dbt disallows subfolders
      5. You want to organize your dbt models by year and quarter. Which directory structure best supports this while keeping references simple?
      hard
      A. models/year_2024_q1_sales.sql and reference as year_2024_q1_sales
      B. models/q1/year_2024/sales.sql and reference as q1.year_2024.sales
      C. models/sales/year_2024_q1.sql and reference as sales.year_2024_q1
      D. models/year_2024/q1/sales.sql and reference as year_2024.q1.sales

      Solution

      1. Step 1: Understand multi-level directory organization

        Organizing by year then quarter creates clear hierarchy: year_2024/q1/.
      2. Step 2: Check referencing simplicity

        dbt references nested folders with dot notation: year_2024.q1.sales is clear and logical.
      3. Final Answer:

        models/year_2024/q1/sales.sql and reference as year_2024.q1.sales -> Option D
      4. Quick Check:

        Use nested folders with dot notation references [OK]
      Hint: Use nested folders matching dot notation references [OK]
      Common Mistakes:
      • Reversing folder order causing confusing references
      • Using flat filenames losing hierarchy clarity
      • Ignoring dot notation for nested folders