Bird
Raised Fist0
dbtdata~5 mins

if/else logic in models in dbt - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the purpose of using if/else logic in dbt models?
If/else logic in dbt models helps control which SQL code runs based on conditions, allowing dynamic and flexible data transformations.
Click to reveal answer
beginner
How do you write a simple if/else condition in a dbt model using Jinja?
You use Jinja templating syntax: {% if condition %} SQL code {% else %} other SQL code {% endif %}. This lets you choose SQL parts based on conditions.
Click to reveal answer
beginner
What happens if the if condition is false and there is no else block in a dbt model?
If the if condition is false and no else block exists, the code inside the if block is skipped, and nothing is added in that place.
Click to reveal answer
intermediate
Can you nest if/else statements in dbt models? Why would you do this?
Yes, you can nest if/else statements to handle multiple conditions step-by-step, making your model logic more detailed and precise.
Click to reveal answer
intermediate
Give an example of using if/else logic to switch between two different tables in a dbt model.
Example: {% if var('use_table_a') %} SELECT * FROM table_a {% else %} SELECT * FROM table_b {% endif %}. This runs SQL from table_a or table_b based on the variable.
Click to reveal answer
Which syntax correctly starts an if statement in a dbt model using Jinja?
Aif (condition) {
B{{ if condition }}
C{% if condition %}
DIF condition THEN
What will happen if the if condition is true and there is an else block?
ANeither block runs.
BOnly the else block code runs.
CBoth if and else blocks run.
DOnly the if block code runs.
Why might you use if/else logic in a dbt model?
ATo create dynamic SQL based on conditions.
BTo speed up the database engine.
CTo change the database schema automatically.
DTo write Python code inside SQL.
Which of these is a valid way to end an if/else block in dbt Jinja?
A{% endif %}
Bend if;
C}}
Dend;
Can you use variables inside if conditions in dbt models?
AOnly with special plugins.
BYes, using var('variable_name').
COnly in the else block.
DNo, variables are not allowed.
Explain how if/else logic works in dbt models and why it is useful.
Think about how you can choose different SQL parts based on a condition.
You got /3 concepts.
    Describe a scenario where you would use nested if/else statements in a dbt model.
    Imagine you want to select different tables or columns based on several factors.
    You got /3 concepts.

      Practice

      (1/5)
      1. In dbt models, which SQL construct is commonly used to add if/else logic for creating new columns?
      easy
      A. WHILE LOOP
      B. FOR LOOP
      C. CASE WHEN ... THEN ... ELSE ... END
      D. FUNCTION CALL

      Solution

      1. Step 1: Understand conditional logic in SQL

        SQL uses CASE statements to check conditions and return values accordingly.
      2. Step 2: Identify the correct syntax for if/else logic

        CASE WHEN ... THEN ... ELSE ... END is the standard way to implement if/else logic in SQL and dbt models.
      3. Final Answer:

        CASE WHEN ... THEN ... ELSE ... END -> Option C
      4. Quick Check:

        CASE statement = if/else logic [OK]
      Hint: Remember: CASE is SQL's if/else [OK]
      Common Mistakes:
      • Confusing loops with conditional logic
      • Using function calls instead of CASE
      • Trying to use procedural code in SQL
      2. Which of the following is the correct syntax for a CASE statement in a dbt model to check if a column score is greater than 50?
      easy
      A. CASE WHEN score THEN 'Pass' ELSE 'Fail' END
      B. CASE score > 50 THEN 'Pass' ELSE 'Fail'
      C. IF score > 50 THEN 'Pass' ELSE 'Fail' END
      D. CASE WHEN score > 50 THEN 'Pass' ELSE 'Fail' END

      Solution

      1. Step 1: Review correct CASE syntax

        The correct syntax starts with CASE WHEN condition THEN result ELSE other_result END.
      2. Step 2: Check each option for syntax errors

        CASE WHEN score > 50 THEN 'Pass' ELSE 'Fail' END correctly uses CASE WHEN score > 50 THEN 'Pass' ELSE 'Fail' END. Others miss WHEN, END, or have wrong structure.
      3. Final Answer:

        CASE WHEN score > 50 THEN 'Pass' ELSE 'Fail' END -> Option D
      4. Quick Check:

        CASE WHEN + condition + THEN + result + ELSE + result + END [OK]
      Hint: CASE must have WHEN and END keywords [OK]
      Common Mistakes:
      • Omitting WHEN keyword
      • Missing END at the end
      • Using IF instead of CASE in SQL
      3. Given the following dbt model SQL snippet, what will be the value of status for a row where score = 75?
      SELECT
        score,
        CASE
          WHEN score >= 90 THEN 'Excellent'
          WHEN score >= 70 THEN 'Good'
          ELSE 'Average'
        END AS status
      FROM scores_table
      medium
      A. 'Good'
      B. NULL
      C. 'Average'
      D. 'Excellent'

      Solution

      1. Step 1: Check conditions in order for score = 75

        First condition: score >= 90? No (75 < 90). Second condition: score >= 70? Yes (75 >= 70).
      2. Step 2: Determine which condition applies first

        The first true condition is WHEN score >= 70 THEN 'Good', so status = 'Good'.
      3. Final Answer:

        'Good' -> Option A
      4. Quick Check:

        75 >= 70 = 'Good' [OK]
      Hint: Check CASE conditions top to bottom [OK]
      Common Mistakes:
      • Ignoring order of CASE conditions
      • Choosing 'Excellent' incorrectly
      • Assuming ELSE applies before WHEN
      4. Identify the error in this dbt model snippet:
      SELECT
        user_id,
        CASE
          WHEN age > 18 THEN 'Adult'
          WHEN age <= 18 THEN 'Minor'
          ELSE 'Unknown'
      FROM users
      medium
      A. Missing END keyword for CASE statement
      B. Incorrect comparison operator in WHEN clauses
      C. ELSE clause cannot be used in CASE
      D. Missing comma after user_id

      Solution

      1. Step 1: Check CASE statement syntax

        CASE statements must end with END keyword to close the block.
      2. Step 2: Verify presence of END keyword

        The snippet lacks END after ELSE 'Unknown', causing syntax error.
      3. Final Answer:

        Missing END keyword for CASE statement -> Option A
      4. Quick Check:

        CASE must end with END [OK]
      Hint: Always close CASE with END [OK]
      Common Mistakes:
      • Forgetting END keyword
      • Misplacing ELSE clause
      • Assuming ELSE is optional
      5. You want to create a new column category in your dbt model based on sales amount: if sales > 1000, category is 'High'; if sales between 500 and 1000 inclusive, category is 'Medium'; otherwise, 'Low'. Which CASE statement correctly implements this logic?
      hard
      A. CASE WHEN sales > 1000 THEN 'High' WHEN sales > 500 THEN 'Medium' ELSE 'Low' END
      B. CASE WHEN sales > 1000 THEN 'High' WHEN sales >= 500 AND sales <= 1000 THEN 'Medium' ELSE 'Low' END
      C. CASE WHEN sales > 500 AND sales <= 1000 THEN 'Medium' WHEN sales > 1000 THEN 'High' ELSE 'Low' END
      D. CASE WHEN sales > 1000 THEN 'High' ELSE WHEN sales >= 500 THEN 'Medium' ELSE 'Low' END

      Solution

      1. Step 1: Analyze the conditions and their order

        Check sales > 1000 first for 'High', then sales between 500 and 1000 inclusive for 'Medium', else 'Low'.
      2. Step 2: Verify correct syntax and condition order

        CASE WHEN sales > 1000 THEN 'High' WHEN sales >= 500 AND sales <= 1000 THEN 'Medium' ELSE 'Low' END correctly orders conditions (highest first) and uses proper inclusive range with AND. CASE WHEN sales > 500 AND sales <= 1000 THEN 'Medium' WHEN sales > 1000 THEN 'High' ELSE 'Low' END misses inclusive lower bound (sales=500 fails) and suboptimal order. CASE WHEN sales > 1000 THEN 'High' WHEN sales > 500 THEN 'Medium' ELSE 'Low' END misses inclusive lower bound. CASE WHEN sales > 1000 THEN 'High' ELSE WHEN sales >= 500 THEN 'Medium' ELSE 'Low' END has syntax error with ELSE WHEN.
      3. Final Answer:

        CASE WHEN sales > 1000 THEN 'High' WHEN sales >= 500 AND sales <= 1000 THEN 'Medium' ELSE 'Low' END -> Option B
      4. Quick Check:

        Order and range checks correct in CASE WHEN sales > 1000 THEN 'High' WHEN sales >= 500 AND sales <= 1000 THEN 'Medium' ELSE 'Low' END [OK]
      Hint: Check ranges carefully and order conditions top-down [OK]
      Common Mistakes:
      • Wrong order of conditions causing misclassification
      • Syntax error using ELSE WHEN instead of WHEN
      • Missing inclusive range checks
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard