What if your project's documentation could update itself perfectly every time you change a model?
Why Documenting models in YAML in dbt? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine you have many data models in your project, and you try to keep notes about each model in separate text files or scattered spreadsheets.
When someone new joins, they have to hunt through all these places to understand what each model does.
This manual way is slow and confusing.
Notes get outdated or lost, and it's easy to make mistakes when updating documentation separately from the models.
It's hard to keep everything consistent and clear for everyone on the team.
Documenting models in YAML lets you write clear, organized descriptions right alongside your data models.
YAML files are easy to read and update, and dbt uses them to automatically generate up-to-date documentation.
This keeps your docs and models in sync, saving time and avoiding errors.
# In separate text file
ModelA: This model calculates sales totals.
ModelB: This model filters active customers.models:
- name: ModelA
description: "Calculates sales totals."
- name: ModelB
description: "Filters active customers."You can easily share clear, accurate model documentation that updates automatically as your project grows.
A data analyst joins your team and quickly understands each model's purpose by reading the generated docs from YAML, without asking for explanations.
Manual notes are scattered and hard to maintain.
YAML documentation keeps descriptions close to models and easy to update.
dbt uses YAML docs to create clear, consistent project documentation.
Practice
Solution
Step 1: Understand the role of YAML documentation
YAML files in dbt are used to add metadata like descriptions, not to run code or store data.Step 2: Identify the benefit of documentation
Adding descriptions for models and columns helps team members understand the data and maintain the project easily.Final Answer:
To add clear descriptions for models and columns to improve understanding -> Option CQuick Check:
Documentation purpose = Add descriptions [OK]
- Thinking YAML runs SQL code
- Confusing YAML with data storage
- Ignoring the importance of descriptions
orders in a YAML file?Solution
Step 1: Recall YAML syntax for dbt model documentation
dbt expects a list undermodels:with each model as a dictionary containingnameanddescription.Step 2: Match the correct structure
models: - name: orders description: 'Contains order details' correctly uses a list with a dictionary havingnameanddescription. Other options misuse keys or structure.Final Answer:
models: - name: orders description: 'Contains order details' -> Option DQuick Check:
Model list with name and description = models: - name: orders description: 'Contains order details' [OK]
- Using singular 'model' instead of 'models'
- Not using dash for list items
- Incorrect indentation or key names
models:
- name: customers
description: 'Customer information'
columns:
- name: id
description: 'Unique customer ID'
- name: email
description: 'Customer email address'
What will dbt show as the description for the email column?Solution
Step 1: Locate the column description in YAML
Theemailcolumn is listed undercolumnswith its owndescriptionkey.Step 2: Identify the description text for the email column
The description foremailis 'Customer email address', which dbt will display for that column.Final Answer:
Customer email address -> Option BQuick Check:
Column description matches YAML text [OK]
- Confusing model description with column description
- Missing indentation causing YAML parsing errors
- Assuming no description if not repeated
models:
- name: sales
description: 'Sales data'
columns:
name: amount
description: 'Sale amount'
What is the error in this YAML?Solution
Step 1: Check YAML list syntax for columns
Each column should be a list item with a dash (-) before its dictionary of keys.Step 2: Identify missing dash in columns
Thenameanddescriptionkeys undercolumnslack the dash, so YAML treats them as keys ofcolumnsinstead of list items.Final Answer:
Missing dash (-) before column name and description -> Option AQuick Check:
List items need dash (-) in YAML [OK]
- Forgetting dash for list items
- Misplacing description keys
- Confusing YAML lists and dictionaries
users and transactions, each with columns and descriptions. Which YAML structure correctly documents both models with their columns?Solution
Step 1: Understand YAML list structure for multiple models
dbt expectsmodelsas a list of dictionaries, each withname,description, andcolumnsas a list.Step 2: Evaluate each option's structure
models: - name: users description: 'User data' columns: - name: user_id description: 'User identifier' - name: transactions description: 'Transaction data' columns: - name: transaction_id description: 'Transaction identifier' correctly uses a list with two model dictionaries, each with proper keys and column lists. The other options misuse keys or structure. models: name: users description: 'User data' columns: - name: user_id description: 'User identifier' name: transactions description: 'Transaction data' columns: - name: transaction_id description: 'Transaction identifier' repeats keys incorrectly.Final Answer:
models: - name: users description: 'User data' columns: - name: user_id description: 'User identifier' - name: transactions description: 'Transaction data' columns: - name: transaction_id description: 'Transaction identifier' -> Option AQuick Check:
Multiple models as list items with name and columns = models: - name: users description: 'User data' columns: - name: user_id description: 'User identifier' - name: transactions description: 'Transaction data' columns: - name: transaction_id description: 'Transaction identifier' [OK]
- Using model names as keys instead of list items
- Repeating keys at same level
- Not using dash for multiple models
