DBT uses a versioning system called “Incremental Modeling” which allows to version data models by maintaining the history of changes made to the models and preserving the state of the models at each version.
When you create a new data model in DBT, it creates a new version of the model. Each time you make changes to the model, it creates a new version of the model. DBT tracks the changes made to the models using the version column in the dbt_models table, which is automatically created when you run the dbt init command.
For example, you can create a new data model called “example_model” like this:
dbt model create --name example_model --materialized table --sql "SELECT * FROM {{ source('example_table') }}"
This creates a new version of the “example_model” with the version number 1.
When you make changes to the model and run dbt again, it will create a new version of the model with the version number 2. DBT will keep the previous version of the model in the dbt_models table with the version number 1, so that you can always reference to the previous version of the model.
DBT also provides a command dbt model versions to list all the versions of a specific model and their statuses. If you want to rollback to a specific version of the model, you can use the command dbt model rollback with the version number as argument.
In summary, DBT provides a built-in support for versioning of data models through Incremental Modeling. It tracks the changes made to the models using the version column in the dbt_models table and preserves the state of the models at each version. DBT also provides commands to list all the versions of a specific model, rollback to a specific version of the model and view the status of each version of the model.
Get more useful articles on dbt