Befolkningsdata från SCB med Pentaho

Ämne: BI-verktyg

SCB tillhandahåller ett API för att hämta statistiskt data gällande Sverige. Bland annat finns befolkningsdata för alla län och kommuner i landet att hämta, grupperat på årtal. Vi kan med hjälp av Pentaho Data Integration (PDI) utvinna detta data, och med några små trick vi vill dela med oss av strukturera upp datat på ett läsvänligt format. Transformationen i detta inlägg finns att ladda ner här.

Hämta data från SCB:s API

Flöde för att hämta dataFör att ansluta till och hämta data från SCB:s API använder vi oss av steget HTTP Post i PDI, vilket tar som indata en URL och en textsträng innehållandes begäran vi vill skicka. I vårt fall använder vi oss av URL:en och JSON-strängen som ges som exempel i länken till API:et ovan. Ut kommer då en JSON-formaterad sträng innehållandes en lista av dataobjekt, som i sin tur innehåller regionskod, årtal samt befolkningsmängd.

Vi kan sedan mata in denna JSON-formaterade sträng i ett Json Input-steg, där vi definierar fälten vi är intresserade av att hämta ut (region, årtal och befolkningsmängd). Innan dess måste dock datat från SCB tvättas, då JSON-strängen innehåller formateringsinformation i sitt första tecken vilket gör att den inte kan valideras, varför detta plockas bort i steget ”SCB Request Fix”.

Lägg till regionsnamn

Efter att vi hämtat datat från SCB har vi bara regionskoder för att identifiera regionen befolkningsmängden avser, men inget namn på regionerna. För att åtgärda detta kan vi göra ett anrop till samma URL som tidigare, men utan att göra en POST-begäran. Detta görs med hjälp av steget HTTP Client, vilket returnerar en JSON-sträng med listor på regionskoder och regionsnamn i ordning. Vi kan, återigen med ett Json Input-steg, transformera dessa listor till fält i PDI-flödet, och sedan joina in detta metadata på befolkningsdatat för att även få med namn på regionerna. Till slut kan vi använda oss av Row denormalizer-steget för att denormalisera upp årtalen i separata kolumner, grupperat på region.

PDI-flödeResultat

Gör urvalet dynamiskt

Istället för att hårdkoda begäran vi tog från API-exemplet kan vi dynamiskt bygga vår JSON-sträng utifrån vilka filtreringar vi vill göra. Till exempel kan vi skapa en lista med år (i bilden ovan har en lista med åren mellan 2007 och 2011 använts), eller en lista med innehållstyper (här har endast befolkningsmängd använts), som vi sedan dynamiskt klistrar ihop för att skapa vår POST-begäran. I den länkade transformationen är detta implementerat genom två Data Grids, men fler kan läggas till med hjälp av att anropa samma URL som vi använt tidigare och utläsa vilka möjligheter som finns för grupperingar och filtreringar.

BizOne tillhandahåller PDI-certifierade konsulter, så tveka inte att kontakta oss för hjälp med era ETL- och integrationslösningar.