dbt implementation
We set up dbt with layered models, tests alongside the code and releases via Git. Fokker Services Group uses dbt in its data platform.
At Fokker Services Group, data from many sources is cleaned and modelled on Databricks using dbt
“The data platform is the central place where our data comes together. It lets us provide data for business insights across the company while ensuring that only 1 version of the truth is available” Daan Mastenbroek, Lead Data Engineer and Architect
How can two dashboards show different revenue for the same period?
The revenue calculation sits in a view nobody dares to touch, a Power BI measure and a former colleague’s notebook. dbt brings that logic together in one place as SQL models in Git, with tests.
Your team is left with a dbt project it can read, test and extend itself
Models in three layers
Staging renames source data and assigns data types, intermediate handles calculations, and marts provide tables by subject. This keeps each calculation in one place.
Tests alongside the models
Data tests check keys and references; unit tests check complex logic. In Vivara’s data platform, dbt sits alongside Databricks and Terraform.
Releases through pull requests
Every change is first built in its own schema and runs through the tests. It only goes into production after review and a green check.
Documentation and lineage
dbt generates documentation and a dependency graph from the code. For Koninklijk Concertgebouworkest, we work with dbt, Delta Lake and Unity Catalog.
First, the figures under discussion; then the rest of the source data
-
Map the existing logic
We gather the views, stored procedures and measures that currently calculate the figures, and decide which figures to migrate first.
-
First models with tests
Sources, staging and a mart for those figures, with tests and a CI check on every pull request.
-
Hand over and expand
Your team helps build the models, the agreed approach is documented in the repository, and the old views are only retired once the figures are correct.
Is dbt the right layer for our transformations?
A good fit if
Your data is already in a warehouse or lakehouse, your team writes SQL, and the calculation rules are scattered across views, scripts and reports. dbt brings them together with version control and tests.
Not a good fit if
The data still needs to be extracted from source systems: dbt does not load data itself, so you first need a pipeline or connector. If you only need a few reports from one system, a Power BI model is often enough.
What determines the scope
The number of sources and existing views, how much logic currently sits in reports, whether Git and a CI pipeline are already in place, the underlying platform, and who will maintain the models afterwards.
Will we then be locked into dbt Labs?
The models are SQL and YAML files in your own Git repository. dbt v1 and dbt OSS are covered by the Apache 2.0 open-source licence. The hosted dbt platform is a separate product with its own terms.
Should we run dbt Core ourselves, choose the dbt platform, or run dbt in Databricks or Fabric?
Run dbt Core yourself
Choose this if you already have an orchestrator and a CI pipeline, and want to manage dbt runs, documentation and upgrades yourself.
The dbt platform
Choose this if several teams and analysts work in dbt. You get a browser-based IDE, scheduling, CI for each pull request and hosted documentation.
In Databricks or Fabric
Choose this if your platform is already set: a dbt task in Lakeflow Jobs or a dbt job in Fabric runs alongside your pipelines. Our recommendation for a single team.
We use dbt in the data platforms of Fokker Services Group, Vivara and Concertgebouworkest
Data Science Lab has worked with data and AI since 2016 and is a Databricks Partner and Microsoft Partner. We choose a platform that fits your organisation and set up dbt on it as the layer for your transformations.

In our first conversation, we’ll discuss where your calculation rules currently reside
Stef Stoelwinder
Business DevelopmentStef is your first point of contact. In our first conversation, we’ll discuss your platform, where your calculation rules currently reside and who will maintain them.
E-mail info@datasciencelab.nl
Phone +31 (0)20 3636 724
Which calculations should move to dbt first?
Describe your platform and where your transformations currently run. We’ll reply by email or arrange an initial conversation.
Message sent
Thanks for your message. We’ll be in touch as soon as possible.
Frequently asked questions
dbt is a tool for the T in ELT: it transforms data that is already in your warehouse or lakehouse. You write a model as a SQL SELECT statement or a Python dataframe, and dbt turns it into a view or table and handles the DDL.
Models reference each other using ref(), so dbt knows their order and lineage. Tests and documentation sit alongside the code. dbt does not load data from source systems. It is one building block of your data foundation.
dbt Core is the command-line version that you install and run yourself. dbt Cloud is the hosted product, which dbt Labs now calls the dbt platform. It adds a browser-based IDE, job scheduling, CI for each pull request, hosted documentation and notifications. Catalog and the Semantic Layer are available only with certain subscriptions.
The engine now has two generations. dbt v1 is the Python version, still maintained and licensed under Apache 2.0. dbt v2 runs on a new Rust engine and is the default installation; dbt OSS is its Apache 2.0 release.
dbt Labs recommends three layers. Staging creates one clean model per source table, with the prefix stg_. Intermediate combines data and performs calculations for a specific purpose. Marts provide the entities the organisation works with, such as customers and orders. This moves the data from the structure of the source to the language of the business.
Start with views; turn the models that Power BI reads into tables. Use incremental models, which process only new rows, when runs become too slow.
Data tests check the data after a model is built: is a key unique, are any values missing, and does every order refer to an existing customer? Unit tests check your SQL logic against a small, fixed example before building; dbt Labs recommends running them only during development and in CI.
For models other teams rely on, define a contract specifying column names and data types; if the output does not match, the model will not build. You can read about which rules to monitor in improving data quality.
On Databricks, you use the dbt-databricks adapter and run the project as a dbt task in Lakeflow Jobs, on a SQL warehouse. The identity running the job needs permissions in Unity Catalog for the catalogue, schema and tables that the models read and write. Databricks recommends pinning the adapter version. See Databricks implementation.
In Fabric, a dbt job in Data Factory, still in preview, runs dbt Core on a warehouse or lakehouse. See Microsoft Fabric implementation.
With a snapshot. dbt then records each change as a new row, with the columns dbt_valid_from and dbt_valid_to: a type 2 slowly changing dimension. An updated_at column is preferred; if there is none, dbt compares the columns you specify.
If source data arrives too late, source freshness flags this with a warning or an error. Note that dbt build does not run this check; you need to add it as a separate step in the job.
Often, the problem is moving old views across one for one: the same tangle ends up in dbt, just in Git. Without an owner for each mart, the project can also grow into a thicket of models that nobody dares to remove.
Other pitfalls include using incremental models too early, having no CI check so errors only surface in production, and tests that always issue warnings and are therefore ignored. Loading source data belongs in data engineering; we can handle the subsequent upkeep through management and continuous improvement.
If you are creating a few reports from one system and the logic fits in a single Power BI model, dbt adds a layer that someone has to maintain. Likewise, if most of the work involves streaming or heavy processing in Spark, that belongs in pipelines; dbt is suited to the models that follow.
And if nobody on the team wants to write or review SQL, a dbt project offers little value. If a simpler solution is a better fit, we will say so. If you want to compare providers first, see our overview of data platform consultancies.