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
Why documentation makes data discoverable
📖 Scenario: You work in a team that builds data models using dbt. Your team wants to make it easy for everyone to find and understand the data models you create. Good documentation helps with this by explaining what each model does and how to use it.
🎯 Goal: Create a simple dbt model and add documentation to it. Then, configure dbt to generate documentation so that the data models become easy to discover and understand for your team.
📋 What You'll Learn
Create a dbt model file with a simple SQL query
Add a description to the model in the schema.yml file
Configure dbt to generate documentation
Run dbt commands to build and serve the documentation
💡 Why This Matters
🌍 Real World
Teams use dbt documentation to help everyone understand and find data models quickly, improving collaboration and reducing confusion.
💼 Career
Data analysts and engineers often need to document their work so others can trust and use data effectively. Knowing how to document in dbt is a valuable skill.
Progress0 / 4 steps
1
Create a simple dbt model
Create a dbt model file named my_first_model.sql inside the models folder. Write a simple SQL query that selects all columns from the raw_data.customers table.
dbt
Hint
Use a simple SELECT * FROM raw_data.customers query in the model file.
2
Add documentation to the model
Create or update the schema.yml file in the models folder. Add a description for the model my_first_model under the models section. Use the description: 'This model selects all customer data from the raw source.'
dbt
Hint
In schema.yml, add a models list with an entry for my_first_model and a description.
3
Configure dbt to generate documentation
In your dbt project, ensure you have a dbt_project.yml file. Add or confirm the docs section exists with generate: true to enable documentation generation.
dbt
Hint
In dbt_project.yml, add a docs section with generate: true to enable documentation.
4
Build and serve the documentation
Run the dbt commands dbt docs generate and dbt docs serve in your terminal to build and view the documentation. This will make your model and its description discoverable in a web browser.
dbt
Hint
Run dbt docs generate to build docs and dbt docs serve to open them in your browser.
Practice
(1/5)
1. Why is documentation important in dbt projects for data discoverability?
easy
A. It speeds up the data processing time.
B. It explains data clearly so users can find and understand it easily.
C. It automatically fixes errors in data models.
D. It encrypts data for security.
Solution
Step 1: Understand the purpose of documentation in dbt
Documentation provides clear explanations about data models and columns.
Step 2: Connect documentation to data discoverability
Clear explanations help users find and understand data easily, improving discoverability.
Final Answer:
It explains data clearly so users can find and understand it easily. -> Option B
Quick Check:
Documentation improves discoverability [OK]
Hint: Documentation means clear explanations for easy data finding [OK]
Common Mistakes:
Confusing documentation with data processing speed
Thinking documentation fixes data errors automatically
Assuming documentation encrypts data
2. Which of the following is the correct way to add a description to a dbt model in YAML?
easy
A. models:
- name: sales
description: 'Contains sales data by region'
B. models:
name: sales
description: 'Contains sales data by region'
C. model:
- name: sales
description: 'Contains sales data by region'
D. models:
- sales:
description: 'Contains sales data by region'
Solution
Step 1: Recall YAML structure for dbt model descriptions
The correct syntax uses 'models:' followed by a list with '- name:' and 'description:' keys.
Step 2: Identify the option matching this structure
models:
- name: sales
description: 'Contains sales data by region' correctly uses a list item with 'name' and 'description' under 'models'.
Final Answer:
models:\n - name: sales\n description: 'Contains sales data by region' -> Option A
Quick Check:
Correct YAML list syntax [OK]
Hint: YAML lists use dash and indentation for model descriptions [OK]
Common Mistakes:
Missing dash for list items
Using singular 'model' instead of 'models'
Incorrect indentation breaking YAML format
3. Given this YAML snippet in a dbt model file:
models:
- name: customers
description: 'Customer details including name and email'
- name: orders
description: 'Order records with dates and amounts'
What will dbt documentation show for the 'orders' model?
medium
A. Error loading description
B. Customer details including name and email
C. Order records with dates and amounts
D. No description available
Solution
Step 1: Locate the 'orders' model in the YAML snippet
The 'orders' model is listed with a description: 'Order records with dates and amounts'.
Step 2: Understand dbt documentation usage
dbt uses the description text to show model info in docs.
Final Answer:
Order records with dates and amounts -> Option C
Quick Check:
Model description matches YAML text [OK]
Hint: Match model name to its description in YAML [OK]
Common Mistakes:
Mixing descriptions between models
Assuming missing description means error
Confusing model names
4. You wrote this YAML for a dbt model description but the docs show no description:
A. Missing dash (-) before 'name' to define list item
B. Incorrect key 'description' instead of 'desc'
C. YAML does not support descriptions
D. Model name should be uppercase
Solution
Step 1: Check YAML list syntax for models
dbt expects 'models:' followed by a list indicated by '-'. Missing dash means no list item.
Step 2: Identify the missing dash before 'name'
Without '-', YAML treats 'name' as a key under 'models', not a list item, so description is ignored.
Final Answer:
Missing dash (-) before 'name' to define list item -> Option A
Quick Check:
Dash defines list items in YAML [OK]
Hint: Always use dash for list items in YAML [OK]
Common Mistakes:
Using wrong key names
Thinking YAML disallows descriptions
Ignoring YAML indentation rules
5. You want to improve data discoverability by adding descriptions to columns in a dbt model. Which YAML snippet correctly documents the 'customer_id' column with a description?
hard
A. models:
- name: customers
columns:
- name: customer_id
desc: 'Unique ID for each customer'
B. models:
- name: customers
columns:
customer_id: 'Unique ID for each customer'
C. models:
- name: customers
columns:
- customer_id: 'Unique ID for each customer'
D. models:
- name: customers
columns:
- name: customer_id
description: 'Unique ID for each customer'
Solution
Step 1: Recall correct YAML structure for column documentation in dbt
Columns are listed as items with '- name:' and 'description:' keys.
Step 2: Identify the option matching this structure
models:
- name: customers
columns:
- name: customer_id
description: 'Unique ID for each customer' correctly uses '- name: customer_id' and 'description' key.
Final Answer:
models:\n - name: customers\n columns:\n - name: customer_id\n description: 'Unique ID for each customer' -> Option D
Quick Check:
Correct column description syntax [OK]
Hint: Use '- name:' and 'description:' for columns in YAML [OK]