Incremental models only process new data. Critical for large tables.
Basic pattern:
{{ config(materialized='incremental') }}
SELECT * FROM {{ source('raw', 'events') }}
{% if is_incremental() %}
WHERE event_time > (
SELECT MAX(event_time) FROM {{ this }}
)
{% endif %}
Strategies:
append: Just add new rowsmerge: Update existing + add new (requires unique_key)
Caution: Incremental models can drift from source. Run full refreshes periodically.