Which file would you edit to add a reusable SQL function?
medium
A. models/customers.sql
B. dbt_project.yml
C. macros/date_utils.sql
D. models/orders.sql
Solution
Step 1: Identify purpose of macros/ folder
The macros/ folder holds reusable SQL functions and macros.
Step 2: Locate reusable function file
The file macros/date_utils.sql is the right place to add reusable SQL functions.
Final Answer:
macros/date_utils.sql -> Option C
Quick Check:
Reusable SQL functions = macros/ folder [OK]
Hint: Reusable SQL code goes in macros/ folder [OK]
Common Mistakes:
Adding functions inside models/ files
Editing dbt_project.yml for SQL code
Confusing macros/ with models/
4. You see this error when running dbt: Compilation Error: Could not find model 'sales_summary'. Which is the most likely cause related to project structure?
medium
A. The 'sales_summary.sql' file is missing from the models/ folder.
B. The 'sales_summary.sql' file is inside the macros/ folder.
C. The dbt_project.yml file is missing.
D. The snapshots/ folder contains 'sales_summary.sql'.
Solution
Step 1: Understand error meaning
The error means dbt cannot find the model named 'sales_summary'.
Step 2: Check model file location
Models must be in the models/ folder. If the file is missing there, dbt can't compile it.
Final Answer:
The 'sales_summary.sql' file is missing from the models/ folder. -> Option A
Quick Check:
Missing model file in models/ causes compilation error [OK]
Hint: Models must be in models/ folder to compile [OK]
Common Mistakes:
Placing model files in macros/ folder
Assuming missing dbt_project.yml causes this error
Confusing snapshots/ with models/
5. You want to organize your dbt project so that models related to customers and orders are in separate folders inside models/. How should you update your dbt_project.yml to reflect this structure?
hard
A. Add models:
my_dbt_project:
+materialized: view only
B. No changes needed; dbt auto-detects subfolders without config
C. Add macros:
my_dbt_project:
customers:
+materialized: table
D. Add models:
my_dbt_project:
customers:
+materialized: table
orders:
+materialized: table
Solution
Step 1: Understand folder-specific config in dbt_project.yml
You can specify configs per subfolder inside models/ by nesting them under your project name.
Step 2: Define separate configs for customers and orders folders
Adding customers: and orders: keys with materialization settings applies configs to those subfolders.