Creates dbt models following project conventions...
Read before you write. Build after you write. Verify your output.
dbt build after creating/modifying models - compile is NOT enoughdbt show - don't assume successcat dbt_project.yml
find models/ -name "*.sql" | head -20
Read 2-3 existing models to learn naming, config, and SQL patterns.
# Find models with similar purpose
find models/ -name "*agg*.sql" -o -name "*fct_*.sql" | head -5
Learn from existing models: join types, aggregation patterns, NULL handling.
# Preview upstream data if needed
dbt show --select <upstream_model> --limit 10
Follow discovered conventions. Match the required columns exactly.
dbt compile --select <model_name>
This step is REQUIRED. Do NOT skip it.
dbt build --select <model_name>
If build fails:
Build success does NOT mean correct output.
# Check the table was created and preview data
dbt show --select <model_name> --limit 10
Verify:
For models with calculations, verify correctness manually:
# Pick a specific row and verify calculation by hand
dbt show --inline "
select *
from {{ ref('model_name') }}
where <primary_key> = '<known_value>'
" --limit 1
# Cross-check aggregations
dbt show --inline "
select count(*), sum(<column>)
from {{ ref('model_name') }}
"
For example, if calculating total_revenue = quantity * price:
Before declaring done, re-read the original request: