Prerequisites
- Your project on dbt™ 1.12, upgraded via the 1.12 guide. Its opt-in
--use-v2-parserflag is the low-risk way to test v2 compatibility. - An Admin role in Paradime if you’ll be changing workspace or environment versions while testing.
dbt-autofix automates most of it.The dbt™ versions available to your Paradime workspace are listed in Settings > Workspace > General under Change version. Prepare your project against 1.12 with the v2 parser now, and switch when a v2-based version is available for your workspace.
A clean slate
v2 does not support deprecated functionality:- All deprecation warnings must be resolved before upgrading, including historic deprecations and the ones introduced in dbt™ 1.10: custom properties outside
meta, duplicate YAML keys, orphaned Jinja blocks, and properties that moved to configs. - Some behavior change flags are removed (generally in their enabled state). You can no longer opt out of them with
flags:indbt_project.yml.
dbt-autofix helper or the dbt Labs migration agent skill.
Ecosystem packages
The most popular dbt-labs packages (dbt_utils, audit_helper, dbt_external_tables, dbt_project_evaluator) are already v2-compatible. External packages may use outdated code that fails to parse on v2. To check a package, look for the Fusion-compatible badge on the dbt™ package hub or review its require-dbt-version: a range that equals or contains 2.0.0 (for example ">=1.10.0,<3.0.0") is compatible. Test packages that aren’t clearly compatible before deploying.
Changed functionality in v2
These are the specific behavior changes to expect when your project moves to v2.Errors move from compile time to parse time
In v1,dbt parse passes and only dbt compile fails on a nonexistent macro or adapter method ({{ my_nonexistent_macro('amount') }}, {{ adapter.does_not_exist() }}), an undefined generic test in YAML, or a missing variable ({{ var('does_not_exist') }}). In v2, all of these fail at dbt parse.
CLI flags that need changes
--models/--model/-m: use--select/-sinstead (renamed back in dbt™ 0.21). v2 raises an error if you use the old flags. Update Bolt schedule commands that still use them.--resource-type/--exclude-resource-type: use--resource-types/--exclude-resource-types.--partial-parse/--no-partial-parse: no longer supported; remove them from commands (v2 logs deprecation warningdbt1700if passed).
--print, --printer-width, --cache-selected-only, --static-parser) becomes inert in v2: passing them doesn’t error, the flag just does nothing and warns. See the deprecated flags table.
Stricter validation
- Duplicate docs blocks with the same name (for example, identical block names across two packages) now error instead of silently picking one. Rename the duplicates.
- Package version conflicts: if a local package depends on a hub package the root project also requires at a different version,
dbt depserrors (Cannot combine non-exact versions) instead of installing whatever the root requests. - Standalone YAML anchors at the top level of a properties file error; move them under the
anchors:key as described in the 1.10 guide. - Algebraic operations around
return()in macros (for examplereturn('xyz') + 'abc') are no longer supported; the surrounding expression is ignored with aJinjaTopLevelReturnwarning. Compute the value insidereturn().
Runtime behavior changes
dbt buildruns all unit tests first, then builds the rest of the DAG, thanks to built-in column name and type awareness. In v1, unit tests ran in lineage order and needed the model’s direct parents to exist in the warehouse.dbt compilekeeps going after an error: v2 skips nodes downstream of a failed compile but continues compiling the rest of the DAG in parallel, where v1 stopped at the first error.- Threads are managed automatically on Snowflake and Databricks (the
threadssetting acts as a maximum cap if set); on BigQuery and Redshift, v2 respects user-set threads, and--threads 0or omitting the setting enables dynamic optimization. v1 defaulted to--threads 1. dbt cleanis contained: it no longer deletes files in configured resource paths or outside the project directory.- Seeds with trailing commas no longer produce a spurious extra empty column.
- Parse-time printing of
get_relation()outputs the fully qualified relation name instead ofNone, because v2 resolves relation names at parse time to batchget_relation()calls and speed updbt compile. - Custom configs require
metaaccessors:config.get()andconfig.require()no longer return values that exist only undermeta;config.get()returns the default with a warning andconfig.require()errors. Useconfig.meta_get('my_key')andconfig.meta_require('my_key')instead.
New functionality
dbt loginenables browser-based authentication against the dbt platform and unlocks features such as the advanced dbt VS Code extension capabilities;dbt login statusshows your authentication state.- dbt Docs v2:
dbt docs generatecompiles the project, produces Parquet artifacts, and exports a static site in one command; the browser queries the artifacts directly with DuckDB-WASM, so the output can be hosted on any static file host. - Snowflake ML model functions are supported with simplified type checking: any arguments are accepted, and results are treated as
VARIANT, so cast them to the expected type (for examplemy_model!predict(input_column)::float).
Distributions
v2 is available in two distributions: thedbt package (the dbt Fusion engine, the recommended v2 experience) and dbt-core 2.0 (the Apache 2.0 open-source runtime) for organizations with a strict open-source requirement. Projects not ready for v2 can continue on dbt Core™ 1.x. See dbt™ licensing.
Readiness steps
1
Resolve every deprecation warning
On dbt™ 1.12 in the Code IDE, run
dbt parse and clear all deprecation warnings, including the 1.10 and 1.11 waves. Use dbt-autofix or the DinoAI upgrade agent to automate the mechanical fixes.2
Parse with the v2 parser
Run
dbt parse --use-v2-parser and fix anything it reports. A clean v2 parse on 1.12 is the strongest signal your project is v2-ready.3
Update commands and scripts
Sweep Bolt schedule commands, schedules as code, and CI configuration for
-m / --models, --resource-type, and partial-parse flags, and replace them with the v2-compatible forms.4
Check package compatibility
Confirm each package’s
require-dbt-version covers 2.0.0 or carries the Fusion-compatible badge on the package hub, and plan upgrades for the rest.dbt parse --use-v2-parser completes with no errors or deprecation warnings, and no Bolt schedule uses a removed CLI flag. The most common leftovers are custom properties still outside config.meta and -m flags in old schedule commands.Next steps
Upgrade with the DinoAI agent
Automate the whole readiness checklist as one reviewed PR.
Manage dbt™ version
The workspace setting where new versions appear.
Official v2 upgrade guide
The upstream dbt™ documentation this guide is based on, including the full deprecated-flags table.
dbt™ changes overview
dbt Labs’ comparison of deprecations, behavior flags, and removed CLI flags.