Käyttöesimerkit

Data julkaistaan avoindata.fi:ssä tietoaineistoina. Yhteen tietoaineistoon sisältyy aina csv-muotoinen data ja json-muotoinen metadata. Tietoja voidaan käyttää manuaalisesti esimerkiksi Excel-tiedostoina tai ohjelmallisesti eri ohjelmointikielillä.

Manuaalinen käyttö

Sekä datan että metadatan voi ladata klikkaamalla Avaa-linkkiä tietoaineiston etusivulla. Datan voi avata Excelillä tai muulla analyysiohjelmalla.

Ohjelmallinen käyttö

Avoin data on koneluettavaa. Avoindata.fi-palvelu tarjoaa lukemiseen erilaisia vaihtoehtoja.

Seuraavissa esimerkeissä haetaan tietoja kuntien osarahoittamasta työmarkkinatuesta.

Tiedostojen suora konelukeminen

R:n ckanr (cran.r-project.org) -kirjaston ja Pythonin ckanapi (pypi.org) -kirjaston funktioilla voi suoraan lukea datoja avoindata.fistä.

R-esimerkki:

library(ckanr)
library(readr)
library(jsonlite)

# Määritellään CKAN
ckanr_setup(url = "https://avoindata.fi/data/fi/")

# Etsitään kaikki Kelan tietoaineistot
x <- package_search(q = "Kela (Kansaneläkelaitos)")

# Poimitaan ensimmäisen tietoaineiston resurssit
resources <- x$results[[1]]$resources

# Ladataan data
dat <- read_csv(resources[[1]]$url)

# Ladataan metadata
meta <- fromJSON(txt = resources[[2]]$url)

Python-esimerkki:

from ckanapi import RemoteCKAN
import json
import pandas as pd
from urllib.request import urlopen

# Määritellään CKAN
ua = 'avoindata_ckanapi_example/1.0 ({0})'
ckan = RemoteCKAN('https://avoindata.fi/data/fi/', user_agent=ua)

# Etsitään oikea tietoaineisto
packages = ckan.action.package_search(q='Kela (Kansaneläkelaitos)')

# Poimitaan ensimmäisen tietoaineiston resurssit
resources = packages['results'][0]['resources']
dat = pd.read_csv(resources[0]['url'], sep = ',', decimal = ';')

# Ladataan metadata
response = urlopen(resources[1]['url'])
meta = json.loads(response.read())

Datan lukeminen DataStore-rajapinnasta SQL-haulla

R:n ckanr (cran.r-project.org) -kirjastossa on funktiot myös DataStore-rajapinnan kyselyyn. Pythonilla kysely täytyy tehdä urllib (docs.python.org) -kirjastolla.

R-esimerkki:

library(ckanr)
library(glue)

# Määritellään CKAN
ckanr_setup(url = "https://avoindata.fi/data/fi/")

# Etsitään oikea tietoaineisto, jonka otsikko päättyy sanaan kunnittain
x <- package_search(q = "Kela (Kansaneläkelaitos)", fq = "title:kunnittain$")

# Haetaan tietoaineiston datan id
ID <- x$results[[1]]$resources[[1]]$id

# Haetaan kunnan Helsinki kaikkien kuukausien maksettujen työmarkkinatukien summa ja saajat
res <- ckanr::ds_search_sql(
   sql = glue("
      SELECT
         kunta_nimi,
         vuosikuukausi,
         sum(maksettu_eur) as sum_maksettu_eur,
         sum(saaja_lkm) as sum_saaja_lkm
      FROM \"{ID}\"
      WHERE kunta_nimi = 'Helsinki'
         AND aikatyyppi = 'Kuukausi'
         AND tyomarkkinatukipaiva_luokka = 'Yhteensä'
      GROUP BY vuosikuukausi, kunta_nimi"),
   as = "table")
res$records

# vastaa raporttia http://raportit.kela.fi/linkki/46054881

Python-esimerkki:

from ckanapi import RemoteCKAN
import json
import pandas as pd
from urllib.request import urlopen

# Määritellään CKAN
ua = 'avoindata_ckanapi_example/1.0 ({0})'
ckan = RemoteCKAN('https://avoindata.fi/data/fi/', user_agent=ua)

# Etsitään oikea tietoaineisto, jonka otsikko päättyy sanaan kunnittain
packages = ckan.action.package_search(q='Kansaneläkelaitos', fq = 'title:kunnittain$')

# Haetaan tietoaineiston datan id
ID = packages['results'][0]['resources'][0]['id']

# Haetaan kunnan Helsinki kaikkien kuukausien maksettujen työmarkkinatukien summa ja saajat
urli_plain = f'''https://avoindata.fi/data/fi/data/api/3/action/datastore_search_sql?sql=
   SELECT kunta_nimi,
      sum(maksettu_eur) as sum_maksettu_eur,
      sum(saaja_lkm) as sum_saaja_lkm
   FROM "{ID}"
   WHERE kunta_nimi = \'Helsinki\'
   AND aikatyyppi = \'Kuukausi\'
    AND tyomarkkinatukipaiva_luokka = \'Yhteensä\'
   GROUP BY vuosikuukausi, kunta_nimi'''
response = urlopen(urli_plain)
dat = json.loads(response.read())
# vastaa raporttia http://raportit.kela.fi/linkki/46054881