Upgrading to 0.20.0


Breaking changes

  • Schema test macros are now test blocks, which we're going to start calling "generic tests." There is backwards compatibility for schema test macros prefixed test_, and you can still use them without switching to test blocks (though we hope you will soon!). The biggest breaking change is that all tests now return a set of failing rows, rather than a single numeric value. This resolved a longstanding inconsistency between schema tests and data tests.
  • For package maintainers (and some users): The syntax for adapter.dispatch() has changed; see linked documentation below.
  • For adapter plugin maintainers: Macro dispatch now includes "parent" adapter implementations before using the default implementation. If you maintain an adapter plugin that inherits from another adapter (e.g. dbt-redshift inherits from dbt-postgres), adapter.dispatch() will now look for prefixed macros in the following order: redshift__, postgres__, default__.
  • For artifact users: The manifest and run_results now use a v2 schema. What changed: there are a handful of new properties in the manifest; the number of failures for a test has been moved to a new property failures, so that message can be the human-readable failure message.

New and changed documentation


Elsewhere in Core

  • Parsing: rework of partial parsing, introduction of experimental parser
  • The graph Jinja context variable includes exposures
  • Packages can now be installed from git with a specific commit hash as the revision, or via sparse checkout if the dbt project is located in a subdirectory.
  • adapter.dispatch supports new arguments, a new project-level config, and includes parent adapters when searching for macro implementations.
  • Exposures support tags and meta properties


  • New partition-related BigQuery configs: require_partition_filter and partition_expiration_days
  • On BigQuery, dbt can now add query comment items as job labels
  • Snowflake and BigQuery incremental models using the merge strategy accept a new optional config, merge_update_columns.
  • Postgres configs now include first-class support for indexes