Wat is dbt? De basis van de populaire datatransformatie tool uitgelegd

De datatransformatie tool dbt heeft veel fans. Data engineers binnen veel organisaties werken er enthousiast mee. Maar wat doet deze tool eigenlijk? En waarom is het zo populair? In dit blog legt Vladimir Hazeleger, Data Engineer bij Riviq, de basisbeginselen van dbt uit.

Dbt staat voor data build tool en is ontwikkeld door Fishtown Analytics. Het helpt je met alle zaken rondom de ‘T’ in het ETL-proces. Alles rondom de transformatie van data dus. Om specifieker te zijn, is dbt een development framework dat modulaire SQL combineert met best practices op het gebied van software engineering. Maar dat is niet het enige wat deze oplossing zo populair maakt.

De voordelen van dbt

Veel mensen zijn fan van dbt omdat de tool open-source is. Je hebt dus niet te maken met een vendor lock-in. Bovendien komt dbt out-of-the-box met een flinke lijst aan adapters, waardoor je heel snel en eenvoudig met de meeste moderne warehouses verbindt. Een ander voordeel is dat dbt ‘out-of-code’ draait. Alles wat je met dbt uitvoert, staat dus ergens opgeschreven. Daardoor kun je eenvoudig aan de slag met allerlei software engineering best practices, waaronder versiebeheer in Git en geautomatiseerde CI/CD-tests.

Alles wat je moet weten over dbt Core

Wie met dbt aan de slag wil, heeft twee opties. Je hebt dbt Core, dat is de gratis versie. En je hebt dbt Cloud, daar betaal je voor. Cloud regelt standaard al zaken voor je, zoals een plek om je code te schrijven en te runnen en het monitoren van je runs. Bij dbt Core moet je die zaken zelf nog regelen. Daarom is Core vooral geschikt voor meer gevorderde teams die een datatransformatie tool willen die ze makkelijk en snel kunnen integreren in hun bestaande processen. Dit zijn de belangrijkste punten die je moet weten over werken met dbt Core:

  • dbt Core is Python
    In essentie is dbt Core een Python-package. Daarom installeer je dbt Core via PIP, de package manager voor Python.
  • Automatische mappenstructuur
    Dbt Core heeft een command-line interface. Je runt het commando dbt init om een dbt-project te initiëren. Je geeft het project een naam en vervolgens maakt dbt automatisch een speciale mappenstructuur aan. Zo heb je het gehele project op één centrale plek.
  • Connect met data warehouse
    Je maakt eenvoudig een connectie met een datawarehouse via een van de adapters. Als er nog geen adapter voor jouw data warehouse bestaat, bouw je die gemakkelijk zelf met de dbt toolkit.
  • Data warehouse-objecten in dbt
    Of het nou een view, tabel of test is: elk data warehouse-object heet een model in dbt. Al die modellen worden gedefinieerd als een SELECT statement, net als in SQL. In die statements zitten stukjes Python-code verweven. Op basis van jouw ‘SELECT en Python’-code, genereert dbt op de achtergrond ‘echte’ SQL.

Meer van dit in je mailbox?

We sturen je circa 6x per jaar een email met handpicked cases, blogs en tips.

De meerwaarde van dbt

Er bestaan al veel ETL-tools op de markt, zoals SSIS en tools van SAP en Oracle. Afgezien van het feit dat dbt zich puur richt op datatransformatie: wat voegt dbt nog meer toe in vergelijking met die andere tools?

Leesbare dynamische code

In dbt schrijf je code in het Python-dialect Jinja en met macro’s. Met Jinja programmeer je als het ware in je SQL-definities. Jinja stelt je in staat om bijvoorbeeld ‘if’-statements of ‘while’-loops te gebruiken in je SQL-code. Macro’s kun je vergelijken met functies in vrijwel iedere programmeertaal. Je geeft een macro een input mee, die wordt op een standaard manier verwerkt, en vervolgens komt er een output uit. Jinja en macro’s maken je code dynamisch. Dat houdt je code eenvoudig en leesbaar. Dus hoe complexer je code, hoe waardevoller dbt.

Slimme referentiële integriteit voor juiste volgorde

Dbt weet precies in welke volgorde het jouw modellen moeten laden. Dankzij de reference functie houdt de tool bij welk model afhankelijk is van bepaalde andere modellen. Zo bepaalt dbt zelf steeds de juiste laadvolgorde van modellen.

Gemakkelijk testen

Met dbt tests toets je aannames over bijvoorbeeld een model, snapshot of source. Dat doe je eenvoudig door een SELECT statement te schrijven dat foute records opspoort.

Handige historiefunctie

Met dbt snaphots heeft dbt een ingebouwde functie voor Slowly Changing Dimensions type 2 (SCD2). SCD2 is een veelgebruikte strategie om historie in dimensietabellen bij te houden. Dbt snapshots overschrijft bij een update niets, maar voegt simpelweg een nieuwe tabelregel toe met daarin de meest actuele stand van zaken. Het bijbehorende en complexe upsert mechanisme handelt dbt zelf af. Dat scheelt weer handmatig codeerwerk.

Ingebouwde en uitgebreide documentatie

In dbt kun je alles documenteren. Daar bestaat ook een ingebouwd mechanisme voor. Je kunt metadata en beschrijvingen invoeren op alle niveaus van een project. Bijvoorbeeld over het algemene project, maar ook op het niveau van een database, model en individuele kolom. Dbt maakt daar zelfs een interactieve data lineage weergave van.

Configuratie beheren met .yml files

Je kunt de configuratie van onderdelen zowel centraal als decentraal beheren met behulp van .yml files. Dat geldt voor alle onderdelen, zoals modellen, mappen, rechten en iedere tabel die je definieert. Op die manier geef je een specifiek onderdeel één keer veel metadata mee, waarna dbt dat door je hele project gebruikt. Zo heb je veel controle over wat er gebeurt in je project.

Nog krachtiger met add-on packages

In de dbt hub staan talloze add-on packages waarmee je de functionaliteiten van dbt uitbreidt. Die packages zijn door de dbt community gemaakt en vrij beschikbaar. Zo hoef je niet steeds zelf het wiel opnieuw uit te vinden. Een veelgebruikte package is dbt_utils. Daarmee vergroot je in één klap gemakkelijk de utility functionaliteiten van dbt.

Dbt neemt al je SQL-ergernissen weg

Zoals je leest, is dbt rijk aan allerlei handige functies om jouw datatransformatie proces sneller en gemakkelijker te maken. Ben jij een rasechte SQL’er en heb je weinig tot geen ervaring met Python? Dan kan ik me voorstellen dat je je afvraagt of dbt geschikt is voor je. Daar kan ik kort over zijn: zeker weten. Sterker nog, ik durf te stellen dat dbt alle SQL-ergernissen wegneemt. Zelfs als je nog nooit Python hebt geschreven. De beste manier om de handigheid van dbt te ervaren, is door er gewoon mee te starten. Dan merk je snel genoeg waarom het zo’n populaire tool is.

Bekijk het webinar ‘Zelf aan de slag met DBT

Met DBT kun je ruwe data snel en eenvoudig omzetten naar datasets voor bijvoorbeeld machine learning modellen en BI tools. Bekijk dit webinar en leer je hoe je zelf praktisch aan de slag kunt met DBT en vertelt Vladimir Hazeleger over zijn ervaringen in de praktijk.

Vladimir-Hazeleger

Geschreven door

Vladimir Hazeleger

Data engineer

Meer over dit onderwerp