Hoe meer van onze klanten met dbt in aanraking komen, hoe meer kleine maar specifieke vragen we krijgen.

Een van deze vragen die we onlangs kregen ging over het volgende : 

De klant was ontzettend tevreden over de documentatie functie binnen dbt maar liep wel tegen 1 tekortkoming aan. Wanneer een kolom verder downstream werd hergebruikt , moest de beschrijving opnieuw worden toegevoegd in de .yml bestanden om de documentatie compleet te houden. Dit zorgt echter voor 2 mogelijke problemen : 

  1. De beschrijvingen van dezelfde kolom kunnen veranderingen door verschillende bewoordingen
  2. Als de beschrijving of betekenis van een kolom veranderd, moet de beschrijving op meerdere plaatsen worden aangepast.

Om dit probleem te voorkomen heeft dbt helaas (nog) geen mogelijkheid tot overerving van de beschrijvingen maar kan er wel gebruik worden gemaakt van zogenaamde doc blocks : 

Deze blokken code zijn simpelweg een referentie naar een stukje documentatie die op een centrale plek kan worden opgeslagen. Op deze manier is de beschrijving dus altijd gelijk en kan deze direct op alle plaatsen worden aangepast.

Om hiervan gebruik te maken maken we eerst een .md bestand aan met een logische naam. Deze kan op verschillende plaatsen worden neergezet, bijvoorbeeld in de folder van al onze staging tabellen. Door de locatie maken we dan ook gebruik van de naamgeving staging.md

Het aanmaken van de beschrijving is als volgt :

{% docs <naam kolom> %} <beschrijving> {% enddocs %}

Als voorbeeld maken we gebruik van een beschrijving voor de kolom order_item_key 

{% docs order_item_key %} de sleutel die wordt gebruikt voor de specifieke order_item. De wordt gebruikt om te verbinden met de dim_order_item tabel {% enddocs %}

Nadat we dit hebben aangemaakt , plaatsen we de verwijzing simpelweg in de .yml voor de kolom :

Description: ‘{{ doc(“order_item_key”) }}

Dbt zal vanzelf de referentie oppakken en verwijzen naar de doc block.

Opnieuw een feature die ons in staat stelt om efficient te werken en de kans op fouten verkleint!

Tags: