Dat is waar het dbt-codegen pakket om de hoek komt kijken. Het helpt de vervelende delen van je werkstroom te automatiseren, zodat je je kunt richten op wat echt belangrijk is... het genereren van waarde voor belanghebbenden natuurlijk!
Introductie: dbt-codegen
Het pakket dbt-codegen bevat een reeks nuttige macro's die zijn ontworpen om automatisch dbt-code te genereren, waardoor de handmatige inspanningen drastisch worden verminderd. Later in deze post duiken we in een specifieke use case, maar voor nu, weet dat dit pakket een fantastisch hulpmiddel is om vervelende codeertaken te elimineren.
Voor een volledig overzicht, bekijk de dbt-codegen documentatie.
Installeren en instellen van dbt-codegen
Het installeren van dbt-pakketten verschilt enigszins van het installeren van traditionele Python-pakketten (bijvoorbeeld met pip). In plaats daarvan volg je deze eenvoudige stappen:
Ten eerste moet je ofwel een bestand genaamd packages.yml of dependencies.yml aanmaken in je dbt-projectmap. Er zijn een paar verschillen tussen de twee, en voor een betere uitleg bekijk de dbt documentatie over dit onderwerp. Maar voor nu gaan we ervan uit dat een packages.yml bestand volstaat. Zorg ervoor dat dit bestand in dezelfde map staat als je dbt_project.yml bestand.
Plak vervolgens de volgende code in je packages.yml bestand.
pakketten:
- pakket: dbt-labs/codegen
versie: 0.13.1
Opmerking: Als je dit leest vanuit de toekomst, zorg er dan voor dat je 0.13.1 vervangt door de laatste versie.
Tenslotte wordt je pakket geïnstalleerd nadat je dbt deps in je terminal hebt uitgevoerd. Als alles goed gaat, wordt je pakket geïnstalleerd in de map dbt_packages in je dbt project (dat standaard git-ignored is).
Kijk eens in die map! Je zou het volledige dbt project in je dbt_packages map moeten kunnen vinden. Zoals je kunt zien, lijkt het 'pakket' erg op je eigen dbt project. Het heeft zelfs zijn eigen dbt_project.yml bestand. Nog interessanter, het dbt-codegen pakket heeft zelfs zijn eigen packages.yml bestand en heeft het dbt-utils pakket geïnstalleerd! Hoe is dat voor pakket-ontdekking?
Werken met het codegen dbt-pakket
Nu je het dbt-codegen pakket hebt geïnstalleerd, kunnen we eindelijk echt aan de slag. Je kunt het codegen pakket op een paar manieren gebruiken: (1) Met behulp van de terminal/opdrachtregel en uitvoer direct naar de terminal/opdrachtregel, (2) Met behulp van de terminal/opdrachtregel en uitvoer direct naar een bestand en (3) Met behulp van een bestand en het compileren van je code. In deze blog zal ik de verschillende manieren demonstreren met behulp van de generate_source macro.
De generate_source macro wordt gebruikt voor het genereren van yaml-code voor een specifieke bron. Als je bijvoorbeeld een schema hebt voor gegevensinvoer in je datawarehouse met ruwe gegevens, kun je gewoon je schemanaam doorgeven en codegen genereert alle code voor je brontabellen.
Optie 1: code genereren in de opdrachtregel
Om een macro uit het codegen-pakket in je terminal uit te voeren, gebruik je de volgende syntaxis:
<code>dbt run-operation generate_source --args 'schema_name: <schema_name>'</code>
Opmerking: Als je deze eng uitziende foutmelding krijgt: Fout: Ongeldige waarde voor '--args': String ''schema_name:' is geen geldige YAML Vervang gewoon je enkele/dubbele aanhalingstekens door dubbele/enkele aanhalingstekens en dit zou het moeten oplossen!
Voorbeeld: Laten we zeggen dat je een schema hebt genaamd RAW met drie tabellen. Het uitvoeren van de bovenstaande code zal de volgende code genereren in je terminal:
-version: 2
sources:
naam: raw
tabellen:
- naam: medewerkers
- naam: online_orders
- naam: store_sales
Je kunt ook veel verschillende argumenten opgeven. Hiervoor moet je een dict doorgeven in plaats van een sleutel/paar hierboven. Kijk hier voor de uitgebreide lijst van macro's die je kunt gebruiken, maar voor nu willen we de kolomnamen opnemen. Door de onderstaande code uit te voeren, worden de kolomnamen opgenomen:
<code>dbt run-operation generate_source --args '{"schema_name": "<schema_name>", "generate_columns": true}'</code> Bekijk een deel van de uitvoer (ik geef hier slechts één tabel weer):
version: 2
sources:
- name: raw
tables:
- name: employees
columns:
- naam: id
data_type: nummer
- naam: naam
data_type: varchar
- naam: achternaam
data_type: varchar
- naam: contact_nummer
data_type: varchar
- naam: date_of_birth
data_type: date
- name: hire_date
data_type: date
- name: role
data_type: varchar
- name: hourly_rate
data_type: number
Optie 2: Opdrachtregel naar bestand
In de bovenstaande methode krijgen we de yaml-code terug in de opdrachtregel. Maar wat als we dit rechtstreeks naar een bestand willen uitvoeren? Dit bespaart ons veel handmatig werk van kopiëren en plakken. Je voegt gewoon de vlag --quiet en een locatie toe aan het bovenstaande terminalcommando. Zo eenvoudig is het!
<code>$ dbt --quiet run-operation generate_source --args 'schema_name: <schema_name>' > models/staging/<your_folder>/_sources.yml</code>
Optie 3: Kopieer de macro in een bestand en compileer je code
Met deze methode kun je de gewenste macro in een bestand typen en na het compileren van de macro krijg je prachtige code als resultaat.
Je typt of kopieert bijvoorbeeld de volgende macro in een VSCODE sql-bestand:
Druk vervolgens op de compile view rechtsboven en je ziet je code met de snelheid van het licht gegenereerd worden. Zo bespaar je kostbare tijd.
Het dbt-codegen pakket is een kleine maar machtige toevoeging aan je dbt toolkit. Door het automatiseren van repetitieve taken, helpt het je sneller te werken en je te concentreren op het leuke gedeelte - het bouwen van betere modellen.
Probeer het in je volgende project en laat me weten wat je ervan vindt!




