Bird
Raised Fist0
dbtdata~5 mins

Incremental strategies (append, merge, delete+insert) in dbt - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the append incremental strategy in dbt?
The append strategy adds new rows to an existing table without changing or removing existing data. It is like adding new pages to a notebook without erasing old pages.
Click to reveal answer
intermediate
Explain the merge incremental strategy in dbt.
Merge updates existing rows if they match a key and inserts new rows if they don't exist. Think of it as updating your contact list: change info if contact exists, add new contact if not.
Click to reveal answer
intermediate
What does the delete+insert incremental strategy do?
Delete+insert removes rows that match certain conditions and then inserts fresh data. It's like erasing a page in your notebook and rewriting it with updated notes.
Click to reveal answer
beginner
Why use incremental strategies in dbt?
Incremental strategies save time and resources by only processing new or changed data instead of rebuilding entire tables every time.
Click to reveal answer
beginner
Which incremental strategy would you use if you want to keep all old data and just add new rows?
You would use the append strategy because it only adds new rows without changing existing data.
Click to reveal answer
Which incremental strategy updates existing rows and adds new rows in dbt?
AMerge
BAppend
CDelete+Insert
DFull Refresh
What does the append strategy do in dbt?
ADeletes old rows and inserts new ones
BUpdates existing rows only
CAdds new rows without changing existing data
DRebuilds the entire table
When would you use delete+insert strategy?
AWhen you want to append only
BWhen you want to update some rows and add new ones
CWhen you want to keep all old data
DWhen you want to remove certain rows and replace them with fresh data
Which strategy is best to save time by processing only new or changed data?
AIncremental Strategies
BFull Refresh
CManual Table Drop
DAppend Only
In dbt, what key concept helps identify rows to update or delete in incremental models?
AIndex
BPrimary Key
CForeign Key
DPartition
Describe the differences between append, merge, and delete+insert incremental strategies in dbt.
Think about how each strategy handles existing data and new data.
You got /3 concepts.
    Explain why incremental strategies are useful in data transformation workflows.
    Consider the cost of processing large datasets repeatedly.
    You got /3 concepts.

      Practice

      (1/5)
      1. Which incremental strategy in dbt only adds new rows without modifying existing ones?
      easy
      A. delete+insert
      B. merge
      C. append
      D. truncate

      Solution

      1. Step 1: Understand the append strategy

        The append strategy adds only new rows to the existing table without changing any existing data.
      2. Step 2: Compare with other strategies

        Merge updates existing rows and adds new ones; delete+insert replaces matching rows; truncate removes all data first.
      3. Final Answer:

        append -> Option C
      4. Quick Check:

        append = add new rows only [OK]
      Hint: Append means add new rows only, no updates [OK]
      Common Mistakes:
      • Confusing merge with append
      • Thinking delete+insert only adds rows
      • Assuming truncate is an incremental strategy
      2. Which of the following is the correct syntax to define an incremental model using the merge strategy in dbt?
      easy
      A. config(materialized='incremental', incremental_strategy='append')
      B. config(materialized='incremental', strategy='merge')
      C. config(materialized='table', incremental_strategy='merge')
      D. config(materialized='incremental', incremental_strategy='merge')

      Solution

      1. Step 1: Identify correct config keys for incremental merge

        dbt requires materialized='incremental' and incremental_strategy='merge' to use merge strategy.
      2. Step 2: Check each option for correctness

        config(materialized='incremental', incremental_strategy='append') uses 'append' strategy, not merge; config(materialized='table', incremental_strategy='merge') uses materialized='table' which is not incremental; config(materialized='incremental', strategy='merge') uses wrong key 'strategy'.
      3. Final Answer:

        config(materialized='incremental', incremental_strategy='merge') -> Option D
      4. Quick Check:

        incremental_strategy='merge' with materialized='incremental' [OK]
      Hint: Use incremental_strategy='merge' inside config() for merge [OK]
      Common Mistakes:
      • Using wrong materialized type
      • Misspelling incremental_strategy key
      • Confusing strategy key name
      3. Given this dbt incremental model snippet using merge strategy:
      select id, value from source_table where updated_at > (select max(updated_at) from {{ this }})

      What will happen when this model runs?
      medium
      A. Only new rows with updated_at greater than max in target are added
      B. Rows with matching id are updated or inserted based on updated_at filter
      C. All rows from source_table replace the target table
      D. No rows are added or updated because filter excludes all

      Solution

      1. Step 1: Understand the filter condition

        The query selects rows from source_table where updated_at is greater than the max updated_at in the target table ({{ this }}).
      2. Step 2: Understand merge behavior

        Merge updates existing rows with matching keys and inserts new rows. The filter ensures only changed rows are processed.
      3. Final Answer:

        Rows with matching id are updated or inserted based on updated_at filter -> Option B
      4. Quick Check:

        merge updates/inserts filtered rows [OK]
      Hint: Merge updates or inserts rows filtered by updated_at [OK]
      Common Mistakes:
      • Thinking it replaces entire table
      • Assuming only new rows are appended
      • Ignoring the filter condition effect
      4. You wrote this incremental model using delete+insert strategy:
      config(materialized='incremental', incremental_strategy='delete+insert')
      
      select * from source_table

      But the model fails with an error about missing unique key. What is the likely cause?
      medium
      A. You did not specify the unique_key config required for delete+insert
      B. The source_table is empty
      C. delete+insert strategy does not support incremental models
      D. You must use append strategy instead

      Solution

      1. Step 1: Recall delete+insert requirements

        Delete+insert requires a unique_key config to identify rows to delete before insert.
      2. Step 2: Analyze error cause

        Missing unique_key causes dbt to error because it cannot identify which rows to delete.
      3. Final Answer:

        You did not specify the unique_key config required for delete+insert -> Option A
      4. Quick Check:

        delete+insert needs unique_key [OK]
      Hint: Always set unique_key for delete+insert strategy [OK]
      Common Mistakes:
      • Ignoring unique_key requirement
      • Assuming delete+insert works without keys
      • Confusing append with delete+insert
      5. You have a large sales table that updates daily with new sales and corrections to existing sales records. Which incremental strategy should you choose in dbt to efficiently update the table without full reloads?
      hard
      A. merge, because it updates existing rows and adds new ones
      B. delete+insert, because it deletes all rows and inserts fresh data
      C. append, because it only adds new rows
      D. full refresh, because incremental strategies are not suitable

      Solution

      1. Step 1: Analyze data update needs

        The table has new sales and corrections, so existing rows need updates and new rows need inserts.
      2. Step 2: Match strategy to needs

        Append only adds new rows, so it won't update corrections. Delete+insert replaces matching rows but can be costly. Merge efficiently updates and inserts rows incrementally.
      3. Final Answer:

        merge, because it updates existing rows and adds new ones -> Option A
      4. Quick Check:

        merge = update + insert for corrections and new data [OK]
      Hint: Use merge for updates plus new rows efficiently [OK]
      Common Mistakes:
      • Choosing append and missing updates
      • Thinking delete+insert always best
      • Ignoring performance of full refresh
      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