Altijd keurige code met SQLFluff in DBT. Zo werkt deze handige linter

SQL-code reviews kunnen behoorlijk tijdrovend zijn. Zeker als al je collega’s code op een andere manier schrijven. Bijvoorbeeld omdat je er geen afspraken over hebt gemaakt of niet iedereen zich aan de afspraken houdt. Met SQLFluff in dbt voorkom je dat.

Data engineer Maarten Koene legt uit wat het is en waarom iedereen het zou moeten gebruiken.

Voordat je SQL-code voor datatransformaties in productie zet, voer je een code review uit. Tijdens zo’n controle ontstaan nogal eens discussies in organisaties over de schrijfwijze van code. Meestal komt dat omdat er geen duidelijke afspraken over zijn gemaakt. Maar ook als je wél afspraken hebt, kan er nog onduidelijkheid zijn over wat deze ook alweer waren.

Op die manier ben je tijdens een code review vooral bezig met hóe je code hebt geschreven. En te weinig met wát je hebt geschreven. Het kost ook nog eens te veel tijd. Bovendien wordt je code zonder afspraken al gauw een rotzooi. Als al jouw collega’s een eigen schrijfwijze hanteren, wordt je code onoverzichtelijk en moeilijker te onderhouden. Daar wordt niemand vrolijk van.

Kraakheldere afspraken en automatische checks

Een ideale manier om dit te voorkomen, is om te werken met SQLFluff. Zie het als een soort grensbewaker. Je legt er alle code afspraken in vast en vervolgens checkt deze zogeheten linter jouw code ook op die afspraken. Heb je bijvoorbeeld afgesproken dat je een alias met minimaal vier letters schrijft? Maar schrijf je het ergens toch met drie? Dan attendeert SQLFluff je daar direct op.

En het mooie is: SQLFluff kun je rechtstreeks in het populaire data transformatie platform dbt gebruiken.

Meer van dit in je mailbox?

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

De voordelen van SQLFluff

Een linter als SQLFluff maakt jouw leven heel wat gemakkelijker. Dit is waarom:

Profiteer van universele standaardafspraken

Hoeveel spaties springen we in? Komt er een komma aan het begin van een zin én aan het einde? Stop de discussie maar!

In SQLFluff zitten standaardafspraken over de schrijfwijze van code. Die kun je een-op-een overnemen, zodat je afspraken volgt die voldoen aan een objectieve standaardkwaliteit.

Minder tijd kwijt aan code formatteren

Met SQLFluff hoef je code die niet voldoet aan de afspraken over schrijfwijze niet meer handmatig te formatteren.

SQLFluff geeft je een lijst met alle gevonden fouten óf lost de fouten direct voor je op. Dat scheelt je heel wat tijd. Het is overigens verstandig om na die automatische fix nogmaals de code te laten checken door SQLFluff, zodat je zeker weet dat alles is opgelost.

Kortere en inhoudelijkere code reviews

Tijdens code reviews hoef je je niet meer bezig te houden met formatteren. Dat betekent dat je direct de inhoud in kan.

Werkt de code? Hebben we geschreven wat we wilden schrijven? Dat bespaart je tijd en zorgt uiteindelijk voor een betere codekwaliteit.

Kortere inwerktijd voor nieuwe collega’s

Dankzij heldere afspraken en automatische checks op schrijfwijze weten nieuwe collega’s precies aan welke voorwaarden SQL-code moet voldoen. Dat betekent dat ze veel sneller volledig kunnen meedraaien.

In 5 stappen naar SQLFluff in dbt

Aan de slag gaan met SQLFluff in dbt is vrij eenvoudig. Dit zijn de concrete stappen die je moet zetten:

 

1. Maak afspraken

Uiteraard moet je eerst afspraken over je code maken. Gelukkig is er de lijst met standaardafspraken, dus hoef je niet vanaf nul te beginnen.

Die lijst is best flink, dus het is raadzaam dat een team lead eerst alleen door de afsprakenlijst gaat en selecteert waar het team als geheel een ei over moet leggen. Willen jullie afwijken van de standaardafspraken?

Maak dan een configuratie file aan om de standaard te overschrijven.

 

2. Bepaal de transitieperiode

Bepaal met je team binnen welke tijd alle code aan de afspraken moet voldoen. De meest grondige optie is om alle code in één keer te formatteren. Dat kost wat tijd en je moet goed plannen om andermans werk niet in de weg te zitten.

Een andere optie is dat je alleen code formatteert naar de standaard op het moment dat je code aanpast. Ieders werk kan dan ongestoord doorgaan.

Een nadeel daarvan is dat je vrijwel altijd code overhoudt die je nooit aanraakt. Maar die code kun je naar de standaard brengen als je bijvoorbeeld eens een keer tijd over hebt.

3. Installeer SQLFluff met pre-commit

Installeer SQLFluff in je dbt-omgeving. Zorg dat je ook de software pre-commit installeert.

Je hebt pre-commit nodig om SQLFluff automatische checks op de afspraken te laten doen. Vergeet niet om ook je configuratie file met eventueel aangepaste afspraken mee te nemen.

Het is goed om te weten dat wanneer je SQLFluff aanzet in dbt, al je collega’s hun lokale omgeving moeten aanpassen. En dat kost soms wat tijd.

Hier vind je twee handige links voor hulp bij de installatie:

Voorbeeld SQLfluff run-2

4. Evalueer periodiek

Het is verstandig om eens in de zoveel tijd te evalueren. Wil je afspraken veranderen? Of ben je zaken tegengekomen waar je nieuwe afspraken over moet maken?

Vooral kort na de introductie van SQLFluff is het handig om bijvoorbeeld één keer per sprint te evalueren hoe het gaat. Daarna kun je afschalen naar een halfjaarlijkse evaluatie.

 

5. Introduceer SQLFluff in je CI/CD pipelines

Loopt alles op rolletjes? Dan kun je ervoor kiezen om een automatische check op de code in je CI/CD pipelines toe te voegen.

Zo controleer je de code nogmaals voordat het daadwerkelijk in productie gaat.

 

Gebruik zo snel mogelijk een linter

SQLFluff, of een andere linter, kan je leven veel eenvoudiger maken. Het bespaart je enorm veel tijd en discussie.

Dus zet het maar op je to do-lijst: start vandaag nog met een linter!

Maarten Koene

Geschreven door

Maarten Koene

Data engineer

Op de hoogte blijven van de laatste ontwikkelingen en webinars?

Schrijf je dan in voor de nieuwsbrief en ontvang circa 6x per jaar een selectie van blogs, cases, webinars en nieuws in je mailbox.

Meer over dit onderwerp