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
Test Severity Levels in dbt
📖 Scenario: You are working on a data project using dbt. You want to ensure your data quality by adding tests with different severity levels. This helps you decide which test failures should stop your workflow and which should just warn you.
🎯 Goal: Learn how to add tests in dbt with different severity levels: error and warn. You will create a simple model, add tests, and configure their severity.
📋 What You'll Learn
Create a dbt model with sample data
Add a test with severity level error
Add a test with severity level warn
Run dbt tests and observe output
💡 Why This Matters
🌍 Real World
Data teams use dbt tests with severity levels to catch critical data issues early and allow less critical warnings to be reviewed later.
💼 Career
Understanding test severity in dbt helps data analysts and engineers maintain data quality and reliability in production pipelines.
Progress0 / 4 steps
1
Create a simple dbt model
Create a dbt model file named models/customers.sql with the following SQL code: select 1 as id, 'Alice' as name union all select 2, 'Bob'
dbt
Hint
Make sure the file is named exactly customers.sql inside the models folder and contains the exact SQL query.
2
Add a test with severity level error
In the tests folder, create a test file named not_null_id.yml with this content: version: 2 models: - name: customers tests: - not_null: column_name: id severity: error
dbt
Hint
The test file must be YAML format with version 2 and specify severity: error for the not_null test on id column.
3
Add a test with severity level warn
Add another test in the same tests/not_null_id.yml file for the name column with severity set to warn. The YAML should look like this: version: 2 models: - name: customers tests: - not_null: column_name: id severity: error - not_null: column_name: name severity: warn
dbt
Hint
Add the second not_null test for the name column with severity set to warn under the same model.
4
Run dbt tests and observe severity output
Run dbt test in your terminal to execute the tests. Observe that if the id column test fails, dbt stops with an error. If the name column test fails, dbt shows a warning but continues.
dbt
Hint
Use the terminal to run 'dbt test' and watch the output for error and warning messages.
Practice
(1/5)
1. What does setting a dbt test severity level to ERROR do?
easy
A. It stops the dbt run if the test fails.
B. It only logs a warning but continues the run.
C. It ignores the test result completely.
D. It retries the test automatically.
Solution
Step 1: Understand dbt test severity levels
dbt uses severity levels to decide what happens when a test fails.
Step 2: Identify the effect of ERROR severity
When severity is set to ERROR, dbt stops the run immediately on failure.
Final Answer:
It stops the dbt run if the test fails. -> Option A
Quick Check:
ERROR severity = stops run [OK]
Hint: ERROR severity stops the run; WARN just warns [OK]
Common Mistakes:
Confusing ERROR with WARN severity
Thinking ERROR retries the test
Assuming ERROR ignores failures
2. Which of the following is the correct way to set a test severity to WARN in a dbt YAML test configuration?
easy
A. severity: warn
B. severity = WARN
C. severity: WARN
D. severity: Warning
Solution
Step 1: Recall YAML syntax for dbt test severity
dbt expects severity as a key-value pair with uppercase values like WARN or ERROR.
Step 2: Identify correct syntax
The correct syntax uses a colon and uppercase WARN: severity: WARN.
Final Answer:
severity: WARN -> Option C
Quick Check:
YAML key-value with uppercase WARN = correct [OK]
Hint: Use colon and uppercase WARN for severity [OK]
Common Mistakes:
Using lowercase 'warn' instead of uppercase
Using equals sign instead of colon
Spelling severity value incorrectly
3. Given this dbt test configuration snippet:
tests:
- unique:
column_name: id
severity: WARN
What happens if the test fails during a dbt run?
medium
A. The failure is logged as a warning, but the run continues.
B. The test automatically retries until it passes.
C. The test is ignored and no message is shown.
D. The run stops immediately with an error.
Solution
Step 1: Analyze the severity level in the test config
The severity is set to WARN, which means dbt should warn but not stop.
Step 2: Understand dbt behavior on WARN severity
When a test fails with WARN severity, dbt logs a warning and continues the run.
Final Answer:
The failure is logged as a warning, but the run continues. -> Option A
Quick Check:
WARN severity = warn and continue [OK]
Hint: WARN severity warns but lets run continue [OK]
But your dbt run does not stop when the test fails. What is the likely problem?
medium
A. The test name 'not_null' is invalid.
B. The severity key is misplaced; it should be under 'config'.
C. The severity value should be lowercase 'error'.
D. The test is not actually failing.
Solution
Step 1: Check correct placement of severity in dbt tests
Severity must be set inside the config block, not directly under the test.
Step 2: Identify why run does not stop
Since severity is misplaced, dbt ignores it and uses default behavior, so run does not stop.
Final Answer:
The severity key is misplaced; it should be under 'config'. -> Option B
Quick Check:
Severity must be inside config = The severity key is misplaced; it should be under 'config'. [OK]
Hint: Put severity inside config block to take effect [OK]
Common Mistakes:
Using lowercase severity value
Misplacing severity outside config
Assuming test name is wrong
5. You want to run a dbt test that warns on missing emails but errors on duplicate emails. Which YAML configuration correctly sets different severities for these tests on the email column?