loading...

0

Geen producten in de winkelwagen.

RDW Data ontsluiten

Omschrijving

Ontsluiten RDW Data

De data die nodig is om inzichten te krijgen v.w.b. de Citroën XM en C6 is bij het RDW zonder kosten op te halen. Gezien de grote hoeveelheid auto’s in Nederland is dat een wat stevige exercitie gezien het om twee modellen van hetzelfde merk gaat. Gelukkig heeft het RDW een opendata platform. Hier kun je al een compactere dataset samenstellen. Op die manier heb ik voor zowel de XM als de C6 een dataset voor gedefineerd. 

Deze datasets kun je exporteren als .csv wat in basis prima kan werken. Echter, wanneer je het op regelmatige basis wil doen om zo het verloop in tijd te kunnen meten wordt dit wat bewerkelijk. Het RDW biedt de mogelijkheid een dataset via een API te benaderen. Super! Alleen de verwerking er elke maand handmatig af te trappen is ook niet heel robuust. 

Hoe nu te werk te gaan?

Dat is een goede vraag. Om niet te verdrinken in alles wat gedaan moet worden en om het overzichtelijk te houden als eerste een overzicht gemaakt van wat er alles ingeregeld moest worden:

 

  • Ruwe data ophalen via een API
  • Deze ruwe data moet worden opgeslagen in een MySQL database
  • De ruwe data moet opgewerkt worden tot bruikbare data
  • Omdat het verloop in de tijd waarneembaar moet zijn wordt er een datum/tijd toegevoegd
  • Alles moet automatisch gaan maandelijks op een vast moment
  • De website haalt elk uur de data op van de MySQL server t.b.v. de grafieken
  • Er is specifiek voor dit doel een tunnel op gezet om deze MySQL server te kunnen bereiken
Importeren

Allereerst dient de ruwe data te worden opgehaald via een API. Dat laatste is op zich makkelijk: op het moment dat je een dataset hebt aangemaakt komt er automatisch ook een API beschikbaar om deze dataset te benaderen.

Via een Python script wordt de API benaderd, de ruwe data opgehaald, een selectie gemaakt van de te importeren kolommen om dit vervolgens weg te schrijven naar een tabel in een database op een MySQL server. Deze MySQL server is een Mac Mini (M1) in mijn thuisnetwerk. Hoe deze is opgezet zal ik in een andere post beschrijven.

Mutaties

Nu de ruwe data is opgehaald dient deze opgewerkt te worden. Denk daarbij aan het goed zetten van de datum kolommen,  bepalen of het import is ja/nee, aantal dagen in bezit om wat zaken te noemen. Ook voor de leesbaarheid dienen de kolom namen te worden aangepast. 

Als alle mutaties zijn uitgevoerd dan dient de opgewerkte data te worden weggeschreven naar de database in een eigen tabel. Doordat zowel bij het importeren als muteren een datum/tijd wordt toegevoegd zijn we in staat het verloop in tijd in kaart te brengen. 

Automatisch laten draaien

Met een script voor zowel het ophalen van de data als het muteren er van wordt het tijd om het zo in te regelen dat het elke maand op een vast moment automatisch wordt gerund. Op die manier hoeft je er niet bij na te denken wordt de (historische) data elke maand automatisch aangevuld. 

Omdat mijn MySQL server op een Mac mini draait kan ik handig gebruik maken van Automator. Deze applicatie op macOS stelt je heel eenvoudig in staat handelingen te automatiseren (de naam zegt het eigenlijk al). Door een agenda melding te maken kan je hem als agenda item terugkomend laten werken. In de agenda melding is ingesteld dat hij de betreffende scripts runt.

 

Dit is nu ingesteld voor zowel de XM als C6 en werkt inmiddels al 6 maanden feilloos. Met dit werkend kan er gewerkt worden aan het maken van de visualisaties op de website. 

Deze behandel ik in een losse post. Hier zaten n.l. ook weer een aantal uitdagingen bij welke opgelost dienden te worden. 

Categorie: AutoCodingData