Handbook contents

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.

stg_reference_opening_hours.sql

select

site_code,

day_of_wek

from {{ ref('raw_reference_opening_hours') }}

✶ Unknown column "day_of_wek" — did you mean "day_of_week"?

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 definitionCmd/Ctrl-click a ref(), 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

FeatureHow it works
View compiled codeThe code icon toggles a side-by-side view of the SQL Fusion will actually send to Snowflake; it updates as you save.
Live previewThe 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.
IntelliSenseAutocomplete for ref() and source() names and dialect-aware SQL functions.
Hover insightsHover * to see the columns it expands to; hover a column to see its data type.
Build with selectorsCmd/Ctrl+Shift+Enter opens a quickpick to build a selection from the command palette.

Quiz

0/2 answered
  1. 1Live error detection underlines an unknown column the moment you type it. How?

  2. 2You use Rename Symbol on a column. How does the extension update downstream models so reliably?