Auteur: Info Support

Data harmonisatie met API's

Het data integratie probleem

Bij veel analyses heb je data uit meerdere bronnen nodig. De prijzen van een product, reviews door gebruikers van dat product of weersvoorspellingen die van invloed zijn op de verkoop van dat product, staan immers zelden in één databron. Meerdere databronnen complementeren elkaar en wanneer dezelfde gegevens in meerdere bronnen staan, kan de betrouwbaarheid van deze gegevens worden vergroot door ze met elkaar te vergelijken.

Het zal echter maar zelden voorkomen dat verschillende bronnen op dezelfde manier gebruikt kunnen worden. Op technisch vlak kan de manier waarop de data moet worden opgehaald flink verschillen. Verschillende systemen hebben verschillende interfaces en als de data direct uit een database gehaald wordt, is het ophalen van gegevens uit een Oracle database iets anders dan het ophalen uit een SQL Server database, laat staan een Hadoop filesysteem.

Ook wat de data zelf betreft zijn de verschillen vaak groot. Wordt de temperatuur bij een weersvoorspelling bijvoorbeeld uitgedrukt in graden Celsius of in Fahrenheit? En is de score die een gebruiker geeft in een review een aantal sterren met een maximum van vijf of een rapportcijfer van 1 tot 10? En is het veld met het label '2T' gelijk aan het veld 'TG'?

Doordat de technische en functionele verschillen zo groot zijn, is het veel werk om meerdere databronnen te gebruiken in een analyse, laat staan deze ook goed met elkaar te kunnen vergelijken. Het algemeen bekende probleem van data integratie. De data uit de bronnen moet dus gelijkgetrokken worden, ofwel geharmoniseerd. Naamgeving moet uniform gemaakt worden, dezelfde eenheden moeten worden gehanteerd voor dezelfde gegevens en er moet een eenduidige interface zijn om al deze bronnen te kunnen raadplegen.

Er zijn veel manieren om data uit meerdere bronnen te harmoniseren en te ontsluiten, ieder met zijn eigen voor- en nadelen. In deze blog lichten wij een tipje van de sluier op hoe Alliander hier een API voor heeft geïmplementeerd. Deze API fungeert als een soort data hub voor weerdata en meetgegevens.

API-harmonisatie

Als netbeheerder maakt Alliander gebruik van weersvoorspellingen om te voorspellen hoeveel energie er opgewekt en verbruikt gaat worden. Naast deze voorspellingen afkomstig van het KNMI, wordt ook gebruik gemaakt van honderden petabytes aan klimaatdata. Omdat het gebruik van APIs voor applicatie integratie al onderdeel is van het IT-landschap, lag het voor de hand ook voor de harmonisatie van weerdata en de ontsluiting daarvan gebruik te maken van een API. 

De ontwikkelde API bevat een aantal endpoints die informatie geven over de beschikbare data. Hierdoor weet je als analist snel welke databronnen er zijn en welke gegevens zij bevatten. De API fungeert dus als een data catalog. Dit voorkomt dat ieder team dat weerdata gebruikt een eigen zoektocht start en zelf door eindeloze tabellen met omschrijvingen van data moet spitten. En beter nog, doordat er nu één API is, hoeven deze teams geen eigen koppelingen te programmeren. Mocht de interface met één van de bronnen in de toekomst veranderen, kan dit binnen de realisatie van de API worden opgelost, zonder dat de API zelf verandert. Deze ontkoppeling maakt het onderhoud veel eenvoudiger omdat dit slechts op één plek zit.

De data uit alle bronnen kan via twee endpoints aangeroepen worden, zonder dat daarvoor bronspecifieke parameters meegegeven moeten worden. Je kunt daarbij aangeven of je alle data wilt ontvangen in SI-eenheden, eenheden die voor mensen goed leesbaar zijn, of de originele eenheden. Daarnaast kun je kiezen voor verschillende uitvoerformaten, zoals JSON, NetCDF en GRIB (de laatste twee zijn uitstekend voor weerdata!). De API zorgt ervoor dat de hele organisatie op een simpele en snelle manier toegang krijgt tot weersvoorspellingen en -metingen.


 

Reactie toevoegen