Rekrytointipalvelussa käyttökatko 21.5. klo 01.00–08.00 Lisätietoja
Asiointipalveluissa käyttökatko 21.5. klo 6–20 Lisätietoja
Ajanvarausjärjestelmässä käyttökatko 21.5. klo 6–20 Lisätietoja
Kelan etäpalveluissa on havaittu häiriö Lisätietoja
Yhteystiedot
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 Lataa-linkkiä tietoaineiston etusivulla. Datan voi tuoda esimerkiksi Exceliin. Data on eroteltu pilkuin, ja sen merkkikoodauksena on UTF-8.
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