Bird
Raised Fist0
dbtdata~5 mins

Unique key for merge behavior in dbt - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is a unique key in the context of merge behavior in dbt?
A unique key is a column or set of columns that uniquely identify each row in a table. It helps dbt know which rows to update or insert during a merge operation.
Click to reveal answer
beginner
Why is specifying a unique key important for merge operations in dbt?
Specifying a unique key ensures that dbt can correctly match existing rows to update them and avoid duplicate rows when merging new data.
Click to reveal answer
intermediate
What happens if you do not specify a unique key in a dbt merge operation?
Without a unique key, dbt cannot reliably match rows, which may cause errors or duplicate data during the merge.
Click to reveal answer
intermediate
How do you define a unique key in a dbt model for merge behavior?
You define the unique key in the model's config block using the unique_key parameter, listing the column(s) that uniquely identify rows.
Click to reveal answer
beginner
Give an example of a unique key configuration in a dbt model.
Example: {{ config(materialized='incremental', unique_key='id') }} means the 'id' column uniquely identifies each row for merge.
Click to reveal answer
What does the unique key do in a dbt merge operation?
ADeletes duplicate rows automatically
BSorts the data alphabetically
CIdentifies rows to update or insert
DCreates new columns in the table
What might happen if you omit the unique key in a dbt incremental model?
AThe model runs faster
BNothing changes
CThe data is automatically cleaned
DDuplicate rows or errors may occur
How do you specify a unique key in a dbt model?
AIn the SQL SELECT statement
BIn the model's config block with 'unique_key'
CBy naming the model file uniquely
DBy creating an index in the database
Which of these is a good choice for a unique key?
AA column that uniquely identifies each row
BA column with many repeated values
CA column with null values
DA column with random text
In dbt, what type of model typically uses a unique key for merge behavior?
AIncremental models
BSnapshot models
CEphemeral models
DView models
Explain why a unique key is necessary for merge behavior in dbt incremental models.
Think about how dbt knows which rows to change or add.
You got /4 concepts.
    Describe how to set a unique key in a dbt model and what happens if it is missing.
    Focus on the config syntax and consequences.
    You got /3 concepts.

      Practice

      (1/5)
      1.

      What is the main purpose of the unique_key in dbt's merge behavior?

      easy
      A. To delete rows from the source table
      B. To sort the data before merging
      C. To create new columns in the target table
      D. To identify which rows to update or insert during a merge

      Solution

      1. Step 1: Understand the role of unique_key in merge

        The unique_key tells dbt which rows in the target table correspond to rows in the source table during a merge operation.
      2. Step 2: Identify the correct behavior of unique_key

        It helps dbt decide whether to update existing rows or insert new rows based on matching keys.
      3. Final Answer:

        To identify which rows to update or insert during a merge -> Option D
      4. Quick Check:

        unique_key matches rows for merge = D [OK]
      Hint: unique_key matches rows to update or insert [OK]
      Common Mistakes:
      • Thinking unique_key sorts data
      • Believing unique_key creates columns
      • Confusing unique_key with deleting rows
      2.

      Which of the following is the correct way to specify a composite unique_key in a dbt model's merge config?

      merge:
        unique_key: ?
      easy
      A. ['id', 'date']
      B. 'id, date'
      C. {id, date}
      D. id + date

      Solution

      1. Step 1: Recall syntax for composite unique_key

        dbt expects a list of column names for composite keys, written as ['col1', 'col2'].
      2. Step 2: Match syntax options

        ['id', 'date'] uses a list syntax with square brackets and quotes, which is correct.
      3. Final Answer:

        ['id', 'date'] -> Option A
      4. Quick Check:

        Composite unique_key = list of columns [OK]
      Hint: Use list syntax ['col1', 'col2'] for composite keys [OK]
      Common Mistakes:
      • Using a string with commas instead of a list
      • Using curly braces which is invalid syntax
      • Trying to add columns with + operator
      3.

      Given the following dbt merge config:

      merge:
        unique_key: 'user_id'

      And source data:

      | user_id | value |
      |---------|-------|
      | 1       | 100   |
      | 2       | 200   |
      | 1       | 300   |

      What will happen when merging into a target table with existing user_id 1 and 2?

      medium
      A. The row with user_id 1 will cause an error due to duplicate keys
      B. The last row with user_id 1 will update the target, overwriting previous
      C. Both rows with user_id 1 will be inserted as new rows
      D. Only the first row with user_id 1 will update, others ignored

      Solution

      1. Step 1: Understand unique_key behavior with duplicates in source

        dbt uses unique_key to match rows. If source has duplicates, the last row usually overwrites previous ones during merge.
      2. Step 2: Analyze the source data effect

        Two rows with user_id 1 exist; the last row with value 300 will update the target row with user_id 1.
      3. Final Answer:

        The last row with user_id 1 will update the target, overwriting previous -> Option B
      4. Quick Check:

        Duplicate keys in source overwrite last row = C [OK]
      Hint: Last duplicate row in source overwrites target row [OK]
      Common Mistakes:
      • Expecting error on duplicate keys in source
      • Thinking all duplicates insert as new rows
      • Assuming only first duplicate updates
      4.

      Consider this dbt merge config snippet:

      merge:
        unique_key: ['id']

      But the source data has duplicate id values. What is the likely issue?

      medium
      A. Merge will fail or produce incorrect results due to non-unique keys
      B. Merge will ignore duplicates and update only one row
      C. Merge will create new columns for duplicates
      D. Merge will automatically remove duplicates before merging

      Solution

      1. Step 1: Identify problem with non-unique keys in merge

        Unique_key must uniquely identify rows. If duplicates exist, dbt cannot correctly match rows.
      2. Step 2: Understand merge behavior with duplicates

        Duplicates cause merge to fail or produce wrong updates because dbt doesn't know which row to update.
      3. Final Answer:

        Merge will fail or produce incorrect results due to non-unique keys -> Option A
      4. Quick Check:

        Non-unique keys cause merge failure = A [OK]
      Hint: unique_key must be unique; duplicates cause merge errors [OK]
      Common Mistakes:
      • Assuming merge ignores duplicates silently
      • Thinking merge creates new columns for duplicates
      • Believing merge auto-removes duplicates
      5.

      You want to merge data from a source table into a target table using dbt. The source has columns user_id, event_date, and event_type. You want to update existing rows only if both user_id and event_date match. Which unique_key should you use?

      hard
      A. unique_key: 'user_id'
      B. unique_key: ['event_type']
      C. unique_key: ['user_id', 'event_date']
      D. unique_key: ['user_id', 'event_type']

      Solution

      1. Step 1: Identify columns needed to uniquely match rows

        Since updates depend on matching both user_id and event_date, both must be part of unique_key.
      2. Step 2: Choose correct unique_key syntax

        unique_key: ['user_id', 'event_date'] correctly uses a list with both columns to uniquely identify rows for merge.
      3. Final Answer:

        unique_key: ['user_id', 'event_date'] -> Option C
      4. Quick Check:

        Composite key matches both columns = B [OK]
      Hint: Use all columns needed to uniquely identify rows [OK]
      Common Mistakes:
      • Using only user_id when event_date is needed
      • Using event_type which is not unique key
      • Mixing wrong columns in unique_key
      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