Going further 01~7 min
The dbt extension
The same Fusion engine the project pins also powers a VS Code extension that understands your SQL as you type — catching errors before a build, renaming a column across the whole project, and tracing lineage without leaving the file.
What it is
The dbt VS Code extension is the official extension from dbt Labs. It runs a language server on your machine, backed by the dbt Fusion engine — the same engine this project already pins for setup, dbt compile and dbt build. Because Fusion actually parses and type-checks your SQL rather than treating it as text, the editor knows your models, your columns and their types, and can act on that knowledge while you work.
The headline difference from a Snowflake worksheet: feedback arrives as you type, and edits understand the whole project, not just the open file. That is what makes the features below worth turning on.
Live error detection
As you type, the extension underlines problems in red and lists them in the Problems panel — without running anything against Snowflake. Hover a red squiggle to read the message. It catches the obvious typos (missing commas, misspelled keywords, broken Jinja) and, with Fusion's SQL comprehension, the deeper ones too: an unknown column name, a missing group by, an unaggregated column, the wrong arguments to a function, type and schema errors.
select
site_code,
day_of_wek
from {{ ref('raw_reference_opening_hours') }}
The point is the timing. A worksheet finds that typo when the query fails; here it is underlined the moment you write it, before you have built anything.
Rename a symbol everywhere
This is the feature that changes how it feels to work in a project with 1,500+ models. Instead of find-and-replace across the repo and hoping you caught every reference, you rename once and the extension updates every dependant.
- Rename a model — right-click the file in the tree and choose Rename. Every
ref()to it across the project is rewritten. You can preview the changes before applying them. - Rename a column — put the cursor on a column alias and press Rename Symbol (
F2). Downstream references to that column are updated project-wide, because Fusion tracks the column through the lineage — not by matching text.
You rename, once
stg_…opening_hours.sql
site_code → location_code
Every dependant updates automatically
- int_site_capacity.sql
- fct_access_hours.sql
- obt_site_summary.sql
Lineage and navigation in context
Two everyday questions — "where does this come from?" and "what breaks if I change it?" — get answered without leaving the editor.
- Go to definition —
Cmd/Ctrl-click aref(),source()or macro to jump straight to the file that defines it; the same works for column and CTE definitions. - Lineage tab — opens a DAG focused on the file you are in; double-click a node to open that model. Switch it to column-level lineage to trace a single column up and down the graph.
Rounding out the toolkit
| Feature | How it works |
|---|---|
| View compiled code | The code icon toggles a side-by-side view of the SQL Fusion will actually send to Snowflake; it updates as you save. |
| Live preview | The table icon (or Cmd/Ctrl+Enter) runs the model's SELECT and shows rows in a Query Results tab; a codelens above each CTE previews just that step's output. |
| IntelliSense | Autocomplete for ref() and source() names and dialect-aware SQL functions. |
| Hover insights | Hover * to see the columns it expands to; hover a column to see its data type. |
| Build with selectors | Cmd/Ctrl+Shift+Enter opens a quickpick to build a selection from the command palette. |
Quiz
0/2 answered1Live error detection underlines an unknown column the moment you type it. How?
2You use Rename Symbol on a column. How does the extension update downstream models so reliably?