- 18 maart 2022
- Achille Cyubahiro
- 0
Standaard manier om alle dbt modellen uit te voeren
In dbt kun je conceptueel je modellen bouwen en ontwerpen naar wens, om vervolgens deze als eindproduct uit te voeren in je database in de vorm van tabellen en/of views (we zullen Snowflake hiervoor gebruiken). Voor het uitvoeren van je modellen, gebruik je de instructie, dbt run.
Standaard zal de dbt run instructie alle modellen in je dependency graph (dit is een diagram met alle modellen die aan elkaar refereren) uitvoeren. Zo’n dependency graph ziet er bijvoorbeeld als volgt uit:
Kijkend naar onze folder-structuur in dbt, zal volgens de dependency graph hierboven, alleen de volgende modellen uitgevoerd worden (omgebouwd worden tot tabellen/views in snowflake):
Alleen een deel van je modellen uitvoeren
Het kan zijn dat je niet al je modellen in één keer wilt uitvoeren, maar een deel daarvan. In dbt is dit mogelijk door de ‘-m ‘ of ‘- -select’ optie-instructie naast de dbt run te plaatsen. In ons voorbeeld, gaan we als volgt te werk en selecteren we alleen de volgende 3 modellen die we willen uitvoeren:
‘dbt run -m stg_orders stg_customers fct_orders’
We kunnen zien dat deze modellen met succes zijn uitgevoerd in dbt:
Dbt tags voor complexere selecties van je modellen
In het bovenstaande voorbeeld zagen we dat we 3 opeenvolgende modellen hebben kunnen uitvoeren door ze naast het ‘dbt run’ instructie te plaatsen met de optie-instructie ‘-m’. Maar wat als we aan een enorm project werken met 100 modellen en we er maar een paar modellen willen uitvoeren (bijvoorbeeld 6 modellen)? Het intypen van al deze modellen in de opdrachtregel kan vervelend en rommelig zijn!
In dit geval komen dbt tags goed van pas. dbt tags kunnen worden toegepast op verschillende soorten bronnen, waaronder modellen, snapshots, seeds, sources, tabellen, kolommen en nog veel meer. We zullen hier niet verder op ingaan op al deze resources, maar ons alleen richten op de tags die worden toegepast op modellen.
We beginnen met de syntax van dbt tags de we gaan gebruiken – die ziet er als volgt uit: ‘dbt run -m (of –select) tag:my_tag’ (let op: ‘tag’ is enkelvoudig!)
We kunnen dbt tags op 2 manieren instellen/configureren:
- Vanuit een centrale plek, In het ‘dbt_project’ yml bestaand. Dit is het standaard dbt project bestaand waar alle andere instellingen worden ingesteld.
- Een andere optie is om de tags niet vanuit een centraal punt toe te passen, maar binnen een individueel model. We kunnen hiervoor de dbt ‘config’ functie gebruiken.
Daarnaast, is het ook mogelijk om verschillende namen te geven aan één tag, vandaar de vierkante haakjes (geven aan dat het om een lijst gaat) in de voorbeelden hierboven. Indien je toch je tag slechts 1 naam wilt geven, kun je dit doen zonder de vierkante haakjes te gebruiken.
Laten we nu een tag toevoegen aan onze modellen in ons project. We zullen de modellen gebruiken die zich in de ‘Core’ map (Models/Marts/Core) bevinden. Onze dbt tag zullen we configureren in het dbt_project.yml bestaand. De Models/Marts/Core map bevat 6 modellen. Dit betekent zonder tags, dat we alle modellen individueel zouden moeten intypen in de opdrachtregel met het dbt run -m instructie om ze uit te voeren, maar aangezien we nu met tags gaan werken, kunnen we dezelfde resultaten bereiken door een tag in plaats hiervan te gebruiken. We zullen onze tag de naam: ‘core_models’ geven. Om dit gemakkelijker te illustreren, zullen we de modellen uitvoeren in een nieuw schema, welke we ‘tag_schema‘ noemen (net als bij tags, kunnen we dit nieuwe schema ook instellen in hetzelfde standaard dbt_project.yml).
We kunnen zien dat alle 6 modellen met succes zijn uitgevoerd in dbt:
We kunnen ook zien dat de resultaten succesvol zijn uitgevoerd in onze datawarehouse, Snowflake, in het nieuwe schema: tag_schema (Snowflake geeft alle gedefinieerde namen standaard in hoofdletters).
Samenvatting
Dbt tags kunnen heel goed van pas zijn als je te maken hebt met meerdere complexere modellen die je niet allemaal tegelijk wilt uitvoeren. Dbt tags kunnen daarbij handig zijn als je besluit om je modellen in groepen uit te voeren.
Tenslotte, is het ook mogelijk om meerdere dbt tags tegelijk uit te voeren. Je kunt zelfs bepaalde modellen binnen je tag uitsluiten. Meer informatie hierover vindt je hier: https://docs.getdbt.com/reference/resource-configs/tags