dbt Core v0.4.7stable Released Sep 20, 2016
Impact Score: 5/10

dbt Core: dbt version 0.4.7

Source available โ€” automated, not human-reviewed

Component: dbt-core ยท Channel: stable. Automated analysis, not a compatibility certification. How this works.

Analysis updated: 2026-11-01.

Compatibility not verified โ€” check source notes
๐Ÿ“„ .MD
โšก Executive Summary (TL;DR)

dbt Core v0.4.7. Source highlight: pre- and post- run hooks

Who Does This Impact? (Role-Based Analysis)

๐Ÿ’ป Software Engineers & Devs

Check the source notes against the package and APIs you use before upgrading.

๐Ÿ“Š Product & Engineering Leads

Use the documented changes to assess relevance to your product; release frequency alone is not a quality measure.

โš™๏ธ DevOps & Security

Verify the target version, runtime requirements and rollback procedure in the official documentation.

๐Ÿ“„ View Raw Release Notes (Original Developer Log)
### 0. tl;dr - `--version` command - pre- and post- run hooks - windows support - event tracking ### 1. --version https://github.com/analyst-collective/dbt/issues/135 The `--version` command was added to help aid debugging. Further, organizations can use it to ensure that everyone in their org is up-to-date with dbt. ``` bash $ dbt --version installed version: 0.4.7 latest version: 0.4.7 Up to date! ``` ### 2. pre-and-post-hooks https://github.com/analyst-collective/dbt/pull/147 With this release, you can now specify `pre-` and `post-` hooks that are run before and after a model is run, respectively. Hooks are useful for running `grant` statements, inserting a log of runs into an audit table, and more! Here's an example of a grant statement implemented using a post-hook: ``` yml models: my_project: post-hook: "grant select on table {{this}} to looker_user" my_model: materialized: view some_model: materialized: table post-hook: "insert into my_audit_table (model_name, run_at) values ({{this.name}}, getdate())" ``` Hooks are recursively appended, so the `my_model` model will only receive the `grant select...` hook, whereas the `some_model` model will receive _both_ the `grant select...` and `insert into...` hooks. Finally, note that the `grant` statement uses the (hopefully familiar) `{{this}}` syntax whereas the `insert` statement uses the `{{this.name}}` syntax. When DBT creates a model: - A temp table is created - The original model is dropped - The temp table is renamed to the final model name DBT will intelligently uses the right table/view name when you invoke `{{this}}`, but you have a couple of more specific options available if you need them: ``` {{this}} : "schema"."table__dbt_tmp" {{this.schema}}: "schema" {{this.table}}: "table__dbt_tmp" {{this.name}}: "table" ``` ### 3. Event tracking https://github.com/analyst-collective/dbt/issues/89 We want to build the best version of DBT possible, and a crucial part of that is understanding how users work with DBT. To this end, we've added some really simple event tracking to DBT (using Snowplow). We do not track credentials, model contents or model names (we consider these private, and frankly none of our business). This release includes basic event tracking that reports 1) when dbt is invoked 2) when models are run, and 3) basic platform information (OS + python version). The schemas for these events can be seen [here](https://github.com/analyst-collective/dbt/tree/development/events/schemas/com.fishtownanalytics) You can opt out of event tracking at any time by adding the following to the top of you `~/.dbt/profiles.yml` file: ``` yaml config: send_anonymous_usage_stats: False ``` ### 4. Windows support https://github.com/analyst-collective/dbt/pull/154 ![windows](https://pbs.twimg.com/profile_images/571398080688181248/57UKydQS.png)