Community på Sveriges dataportal
Analys Datakvalitet
-
Hej!
På senare tid har det uppkommit bättre förutsättningar för att nyttja Öppna Data:
- Dataportal - för att hitta data
- Specifikationer - för att ensa datamodellerna som beskriver samma sak
- APIer - för maskininläsning av data
Av den anledningen var jag intresserad av att titta på hur upplevelsen för en datakonsument ser ut idag. Det vill säga, hur enkelt är det för en part att integrera och konsumera datat; vilka eventuella hinder och svårigheter möter den utvecklare som avser att bygga en samhällsnyttig tjänst baserat på Öppna Data?
Studien är inte akademisk på något sätt utan enbart en enklare analys.
För studien behövdes ett lämpligt användningsfall och valet föll på datamängden Badplatser då:
- Den har en öppen specifikation
- Ett flertal dataproducenter har valt att publicera data enligt specifikationen
- Ett relativt stort antal olika publiceringar finns att finna via Dataportal.se
- Många av datakällorna är APIer som publicerar datat enligt JSON
I och med detta finns alltså förutsättningar för att hitta och samla in enhetligt data.
I Dataportalen hittade jag 20 publiceringar av Badplatser som kan hämtas via API på JSON-format och som enligt metadatat uppfyller specifikationen https://www.dataportal.se/specifications/badplatser/1.0
Nedan presenteras resultatet av integration mot dessa ovan nämnda resurser.
Den initiala upplevelsen var minst sagt nedslående då ingen av resurserna tillhandahöll data enligt utlovad specifikation.
Majoriteten av API-resurserna är baserade på något som benämns RowStore och verkar vara en del av produkten EntryScape från företaget MetaSolutions AB. All JSON-data från dessa resurser returneras som helt otypat data i konflikt med specifikationen.
Förklaring:
I specifikationen har varje datafält en typ definierad; t.ex. att ett namn är en sträng, en koordinat är ett decimaltal, ett tillstånd som är sant eller falskt är en boolean (true|false) o.s.v.{ "place_id": "1477-Hattarevik", //sträng "latitude": 58.787, //decimaltal "toilet": true //boolean }
Med otypat data så returneras samtliga datafält som godtyckliga strängar, ex:
{ "place_id": "1477-Hattarevik", //sträng "latitude": "58.787", //sträng "toilet": "true", //sträng }
Det är fortfarande läsbart för en människa men JSON-formaterat data är avsett för maskin och nu är datat fullkomligt oanvändbart eftersom samtliga datafält bara innehåller fritexter.
Det vore ju dock tråkigt att avbryta denna analys så här tidigt på grund av APIernas begränsningar. Därför bearbetade jag allt data och konverterade typerna för alla datafält enligt definitionerna i specifikationen för att komma vidare. Härmed kan vi nu titta på datakvaliteten för varje enskild datapost.
Av 156 insamlade och typkonverterade dataposter (badplatser) så visade det sig nu att endast 31 stycken av dessa innehöll korrekt data.
Med andra ord så är det 125 av 156 dataposter vars data inte kan tolkas, det kan t.ex. vara:
- Icke kompletta dataposter som förmodligen inte ens avser att beskriva en faktisk badplats, det är bara skräp.
- Datafält innehåller text-värden som inte går att typkonvertera till aktuell typ.
- Dataposter innehåller datafält med felaktiga namn, d.v.s. som inte matchar specifikationens obligatoriska datafält.
- O.s.v.
Även detta resultat är nedslående, att merparten av allt data har så dålig kvalitet att det inte alls är användbart.
För att sammanfatta denna analys och svara på dess frågeställning:
- Att hitta alla datakällor var relativt enkelt tack vare Dataportal.se. Det hade dock varit önskvärt om det gick att filtrera dataset på metadatafältet “Uppfyller” (ConformsTo) (om det redan går så hittade jag i alla fall inget stöd för det i sökfunktionen och inte heller någon dokumentation om hur det eventuellt kan göras).
- Att integrera mot ett stort antal olika datakällor är förstås något krångligt och tidsödande, men görbart.
- Att datakällorna inte returnerar korrekt formaterat data är katastrofalt ur ett integrationsperspektiv och förtar hela syftet med ett API.
- Att dataposterna har så extremt dålig datakvalitet gör att användningen av detta Öppna Data är omöjlig.
Upplevelsen för mig som integratör mot dessa resurser var onekligen mycket dålig. Hindren var många och ofta oöverstigliga. Möjligheterna att samla in enhetligt data för vidare förädling och eventuell utveckling av nya tjänster är dessvärre obefintliga.
Metadatakatalog och specifikationer i alla ära, men med undermåliga gränssnitt och ingen kontroll på datakvalitet så innebär dessa publiceringar av Öppna Data tyvärr enbart kostnader och tillför inget som helst, eller högst begränsat, faktiskt värde.
Med vänlig hälsning, Magnus
-
@Magnus tack för din analys. 🤩
Jag har under flera år försökt konsumera diverse datamängder från ett antal myndigheter.
Tyvärr är min bild samstämmande med din på tvären av all öppen data från offentliga organisationer med få undantag.
Tex SCB där det av någon anledning är mycket bra ordning på allt.Jag har funderat nyligen på att göra en egen portal och låta en AI och individer recensera öppna datamängder för att få ett bättre överblick. Det skulle då också gå att söka utifrån utgivare och teman så man enkelt hittar det man söker.
Dataportalen som digg driver har många brister och är nästintill värdelös eftersom den likt bolagsverkets årsrapporter inte har någon som helst granskning av kvalitet, möjlighet att flagga värdelösa poster för granskning/borttagning eller möjlighet för konsumenten att recensera en post.
Resultatet är en massa brus.
Den undermåliga sökfunktionen gör portalen nästintill värdelös när det gäller findability så det samlede resultatet är att datakonsumenter nog ger upp och söker sin data på annat håll tex genom att kontakta berörd myndighet direkt istället.
Om du vill bygga en app med badplatser så är mitt förslag att titta på Wikidata och Openstreetmap och kombinera det med Lantmäteriet topo50.
Då får du täckning på gissningsvis 80-90% av landets badplatser.
Sen kan du konsumera datan om badvatten kvalitet från HaV också.Utmaningen är att matcha ihop alla dessa och presentera det hela på ett vettigt sätt för användaren så de enkelt hittar och får en bra badupplevelse.
Integration med Google maps är kanske också möjligt men om deras recensioner går att läsa från en api vet jag ej.
Lycka till!