Je hebt je ruwe data in je database, maar nu wil je die gaan bewerken. In dbt wordt deze ruwe data ook wel ‘Source(s)’ genoemd. Een source is als het ware een nog niet bewerkt databron, waaraan je vervolgens allerlei transformaties erop gaat toepassen. Een van de voordelen voor het gebruiken van Sources, is dat je maar een gedeelte van je databron vanuit je data warehouse hoeft te gebruiken als een Source in dbt (je import dus alleen het gedeelte in dbt wat je nodig hebt voor bepaalde transformaties). In dbt zien je sources er zo uit:

 

Wat zijn Source bestanden in dbt precies? 

In dbt zijn Sources bestanden niets anders dan YAML bestanden. Maar wat zijn YAML bestanden hoor ik je zeggen? YAML (Yet Another Markup Language) is een opmaaktaal net als Json, XML, HTML etc. bedoeld om gegevens en instellingen/configuraties op te slaan in een voor mensen leesbaar formaat. YAML is een simpele taal om te leren en wordt door veel gebruikers ervan ervaren als gemakkelijk te begrijpen en gebruiksvriendelijk.

Zoals je in de bovenstaande diagram ziet, bouwen we modellen op Sources. We moeten dus eerst deze Sources configureren/instellen, vandaar dat we YAML bestanden gebruiken. 

Een van de voordelen van YAML bestanden is dat je meerdere documenten/Sources in een bestand kan definiëren/configureren – dit in tegenstellingen tot bestanden zoals JSON. 

En andere plek in dbt waar je YAML bestanden vooral tegen gaat komen, is het ‘dbt_project.yml’ – de plek om je algehele project in dbt te configureren. YAML bestanden hebben een ‘.yml’ extensie. 

Hoe configureer je een Source in dbt?

Een Source configureren in dbt betekent simpelweg een databron (schema, tabel etc..) vanuit een onderliggend database zoals Snowflake, Postgres etc., in dbt ‘binnen brengen’/importeren. In ons geval, werken we met Snowflake als onderliggende database. In dit voorbeeld gaan we de volgende tabellen vanuit Snowflake in dbt brengen als Sources:

     

Sources in dbt bevinden zich in het ‘dbt_project.yml’ onder de Models subfolder. Aan te raden is het template (YAML bestand) van dbt zelf te gebruiken als uitgangspunt en deze verder aan te vullen naar wens. (Deze kun je hier vinden:

https://docs.getdbt.com/docs/building-a-dbt-project/using-sources)

Dit template hebben we dan ook aangevuld zoals je hieronder ziet:



Dat is het! Opslaan met de extensie ‘.yml’ en Voilà! Een Source in dbt is aangemaakt!

Hoe refereer je naar een Source in dbt?

Je Source is nu klaar voor gebruik om verder gebouwd op te worden. Hiervoor gebruik je een dbt Source functie. De syntaxis van de Source functie ziet er als volgt uit:

Je roept een Source aan bij ‘zijn naam (source_name)’ (in ons geval, ‘Jaffel_shop’) die je aan die source hebt gegeven tijdens het configureren van het Source bestand. Vervolgens geef je aan welke tabel binnen dat Source bestand, je in dbt wil gebruiken.

Zo creëer je bijvoorbeeld een nieuw model (‘stg_orders) in dbt wat refereert naar de ‘Orders’ tabel die in je Source bestand leeft:


Conclusie

We hebben gezien hoe je een brontabel/Source in dbt aanmaakt. Vanaf hier kun je een zo complex mogelijk model bouwen als je wilt! Je kunt zelfs honderden modellen bouwen die allemaal naar deze brontabel refereren! 

Misschien nog belangrijker om te vermelden: verandert er bijvoorbeeld iets aan de onderliggende tabel van een Source (in ons geval, bijvoorbeeld een kolomnaam wijzigt in de tabel ‘Orders’), deze wijziging hoef je alleen maar aan te brengen in het Source bestand in dbt. Omdat de rest van de modellen hiernaar refereren, hoef je dus niet in al deze modellen deze wijziging aan te brengen. Bespaart veel moeite en tijd dus!

Ik hoop dat je een idee/beeld hebt gekregen hoe Sources in dbt werken. Mocht je nog meer willen weten hierover, schroom niet om contact met ons op te nemen.