Data Contract

Kirjoittanut Samu Lahdenperä · Julkaistu 1.6.2026

Data contract on kirjallinen sopimus datan tuottajan ja datan kuluttajan välillä. Se määrittelee mitä dataa tuotetaan, missä muodossa, millä laadulla, kuka siitä vastaa ja millä ehdoilla sitä saa käyttää. Data contract tuo dataan samat odotukset, joita organisaatioilla on muista palveluista: selkeät vastuut, sovittu laatu ja ennustettava käyttäytyminen.

Lyhyesti: Data contract vastaa kysymyksiin kuka omistaa datan, mitä se lupaa laadun suhteen, miten muutoksista ilmoitetaan etukäteen ja kenellä on oikeus käyttää dataa mihin tarkoitukseen.

Ilman data contractia datan kuluttaja — analyytikko, raporttikehittäjä tai toinen tiimi — ei tiedä voidaanko dataan luottaa, muuttuuko skeema varoittamatta tai kuka korjaa ongelman kun data ei saavu ajallaan. Data contract on sopimuksen muotoinen ratkaisu tähän epävarmuuteen.

Dataneuvoksen mielipide

Data contract ei ole byrokratiaa — se on kohteliaisuutta. Kun kirjaat ylös mitä lupaat datan suhteen, pakota itsesi miettimään lupauksen realistisuus. Samalla kuluttaja tietää mihin luottaa ja mihin ei. Aloita yksinkertaisesta: yksi sivu, tärkeimmät kentät, vastuuhenkilö ja yksi SLA. Se on parempi kuin täydellinen sopimus jota ei ole olemassa.

Esimerkkisopimus: Uutissivun lukijadata

Alla on esimerkki käytännön data contractista. Sopimus kattaa uutissivuston verkkoseurannan tuottaman lukijadatan, jota toimituksen analytiikkatiimi, markkinointi ja tuotekehitys käyttävät sisältöpäätösten ja tilaajakonversion tukena. Koska data sisältää henkilötietoja, GDPR asettaa sopimukselle erityisvaatimuksia.

Data Contract — Uutissivun lukijadata (web.LukijaKaynti) Versio 2.0  ·  Voimassa 2025-04-01 alkaen  ·  Aktiivinen
Tuottaja
Tekninen tiimi / verkkoseuranta (Matomo)
Kuluttaja
Toimituksen analytiikkatiimi, markkinointi, tuotekehitys
Datan omistaja
Digitaalinen päätoimittaja (Sanna Heikkinen)
Tekninen vastuuhenkilö
Data Engineer (Mikko Virtanen)
Tietosuojavastaava
DPO (Laura Mäkinen, dpo@uutislehti.fi)
Päivitysväli
Reaaliaikainen stream + koostettu vuorokausitaulukko klo 03:00
Säilytysaika
Raakadata 13 kk, anonymisoitu historiataulukko 5 vuotta
Henkilötietoluokka
Kyllä — IP-osoite, evästetieto, kirjautunut käyttäjätunnus

1. Omistajuus ja vastuut

Rooli Henkilö / Taho Vastuu
Data Owner Sanna Heikkinen, digitaalinen päätoimittaja Vastaa datan käyttötarkoitusten hyväksynnästä liiketoiminnan näkökulmasta. Hyväksyy skeemanmuutokset ja uudet käyttötarkoitukset. Viimekätinen vastuu GDPR-noudattamisesta tässä sopimuksessa.
Data Steward Petra Laine, web-analyytikko Päivittäinen laadunvalvonta. Hallinnoi suodatuslistoja (botit, sisäinen liikenne). Käsittelee rekisteröityjen poistopyynnöt tekniselle tiimille.
Data Custodian Mikko Virtanen, data engineer Tekninen vastuu keräysputkesta, tallennuksesta, anonymisoinnista ja skeemanmuutosten toteutuksesta. Toteuttaa poistopyynnöt 30 vrk sisällä.
Tietosuojavastaava (DPO) Laura Mäkinen Varmistaa GDPR-vaatimusten täyttymisen. Hyväksyttävä ennen uusien henkilötietokategorioiden lisäämistä skeemaan.
Data Consumer Analytiikkatiimi, markkinointi, tuotekehitys Käyttää dataa sovitun käyttötarkoituksen ja myönnetyn roolin mukaan. Raportoi laatu- ja tietosuojapoikkeamat Data Stewardille välittömästi.

2. Skeema

Sarake Tyyppi Pakollinen Henkilötieto Kuvaus
kaynti_id BIGINT Kyllä Ei Surrogaattiavain. Yksilöi yksittäisen sivulatauksen.
istunto_id VARCHAR(64) Kyllä Kyllä Pseudonymisoitu istuntotunniste. Yhdistää saman selaajan käynnit yhden sessioikkunan sisällä. Hashattu SHA-256.
lukija_id VARCHAR(64) Ei Kyllä Pseudonymisoitu pitkäaikainen tunnisteevästetunniste. NULL jos evästettä ei ole hyväksytty tai selain estää.
kayttaja_id INT Ei Kyllä Tilaajan käyttäjätunnus jos kirjautunut. NULL anonymeille. Viiteavain tilaajakantaan.
artikkeli_id INT Kyllä Ei Viiteavain sisältötauluun. NULL etusivulle ja kategorianäkymille.
sivutyyppi VARCHAR(30) Kyllä Ei Arvot: artikkeli, etusivu, kategoria, haku, tilaus, muu. Ei vapaata tekstiä.
kayntiaikaleima DATETIME Kyllä Ei Sivun latausaika UTC-aikavyöhykkeessä. Ei tulevaisuuden aikoja.
lukuaika_sekuntia INT Ei Ei Arvioitu aktiivinen lukuaika sekunteina. NULL jos selain ei tue tapahtumia. Arvot 0–3600.
vierityssyvyys_pct TINYINT Ei Ei Kuinka pitkälle artikkeli vieritetty, prosentteina 0–100. NULL jos ei mitata.
laitetyyppi VARCHAR(10) Kyllä Ei Arvot: desktop, mobile, tablet. Johdettu User-Agent-merkkijonosta.
maa_koodi CHAR(2) Ei Kyllä ISO 3166-1 alpha-2 -maakoodi IP-geolokalisaatiosta. NULL jos ei voida määrittää. IP-osoitetta ei tallenneta.
suostumus_tila VARCHAR(15) Kyllä Ei Arvot: hyvaksytty, hylätty, vanhentunut, ei_kysytty. Kuvaa evästesuostumuksen tilan lataushetkellä.
tilaaja_tyyppi VARCHAR(15) Kyllä Ei Arvot: anonyymi, rekisteröitynyt, ilmaistilaaja, maksullinen. Johdetaan kayttaja_id:n perusteella.
viittaaja_luokka VARCHAR(20) Ei Ei Liikenteen lähteen luokka. Arvot: suora, hakukone, some, uutiskirje, muu. Tarkkaa viittaaja-URL:ia ei tallenneta.
on_botti BIT Kyllä Ei 1 jos tunnettu botti tai indeksointirobotti, muuten 0. Botit suodatetaan pois analytiikkanäkymistä muttei raakadatasta.

3. Laatusäännöt

Sääntö Ehto Toimenpide rikkomuksesta
Suostumus ennen henkilötietojen tallennusta Jos suostumus_tila = 'hylätty', sarakkeet lukija_id, kayttaja_id ja maa_koodi on oltava NULL ETL-prosessi nollaa henkilötietosarakkeet automaattisesti. Poikkeamat kirjataan tietosuojalokiin. DPO:lle ilmoitus välittömästi jos > 0 rikkomusta vuorokaudessa.
Ei NULL-arvoja avaintiedoissa kaynti_id, kayntiaikaleima, sivutyyppi, laitetyyppi, suostumus_tila, on_botti eivät saa olla NULL Rivi hylätään ETL-vaiheessa. Data Stewardille ilmoitus jos > 0,5 % riveistä hylätään.
Sivutyyppi sallituista arvoista sivutyyppi IN (artikkeli, etusivu, kategoria, haku, tilaus, muu) Rivi ohjataan karanteeniin. Uudet sivutyypit lisätään Data Ownerin hyväksynnällä.
Aikaleima ei tulevaisuudessa kayntiaikaleima <= UTC_NOW() + 5 min (toleranssi kelloneroille) Rivi hylätään. Ilmoitus Data Stewardille.
Botisuodatus Tunnettujen bottien User-Agent-sormenjäljet suodatetaan IAB/ABC-listan mukaan. Lista päivitetään kuukausittain. Bottirivit merkitään on_botti = 1 ja jätetään raakadataan mutta poissuodatetaan kaikista analytiikkanäkymistä.
Sisäisen liikenteen poissulkeminen Toimiston IP-alueet (10.10.0.0/16) merkitään on_botti = 1 Lista päivitetään IT:n toimesta aina toimistoverkon muuttuessa. Data Steward vastaa ajantasaisuudesta.
Lukuajan arvoalue lukuaika_sekuntia IN [0, 3600] tai NULL Yli 3600 sekunnin arvot katkaistaan 3600:aan ennen latausta. Kirjataan muutoslokiin.
Päivittäinen kattavuus Vuorokausitaulukossa jokaiselle kalenteripäivälle vähintään 1 000 käyntiriviä (arkipäivät) Hälytys Data Stewardille ja Data Custodianille klo 04:30 mennessä. Alle 500 käyntiä käynnistää P1-prosessin automaattisesti.

4. Skeemanmuutokset

Koska skeema sisältää henkilötietoja, kaikki muutokset vaativat DPO:n arvion ennen käyttöönottoa.

Muutostyyppi Esimerkit Ilmoitusaika Hyväksyntä
Ei-rikkova muutos Uuden valinnaisen ei-henkilötietosarakkeen lisäys, indeksin lisäys, kuvauksen päivitys, sallitun arvojoukon laajennus 7 päivää ennen Data Custodian ilmoittaa, DPO:n tieto riittää jos ei koske henkilötietoja
Ei-rikkova muutos (henkilötieto) Uuden valinnaisen henkilötietosarakkeen lisäys, keräyslaajuuden muutos 21 päivää ennen Data Ownerin ja DPO:n kirjallinen hyväksyntä. Tietosuojaseloste päivitettävä ennen käyttöönottoa.
Rikkova muutos Sarakkeen poisto tai uudelleennimeäminen, tietotyypin muutos, pakollisen sarakkeen lisäys, arvojoukon kaventaminen 30 päivää ennen Data Ownerin ja DPO:n kirjallinen hyväksyntä + kaikkien nimettyjen kuluttajien vahvistus

Muutosten hallintakäytäntö:

5. SLA:t ongelmatilanteissa

Vakavuus Kuvaus Vasteaika Ratkaisuaika Tiedotusväli
P1 — Kriittinen Keräysputki poikki — dataa ei saavu lainkaan. Tai tietosuojarikkomus: henkilötietoja tallennetaan ilman suostumusta. 30 min 4 tuntia Joka 30 min. Tietosuojarikkomus: DPO:lle välitön ilmoitus, 72 h ilmoitusvelvollisuus viranomaiselle.
P2 — Korkea Data on osittain virheellistä tai puuttuu yli 10 % riveistä. Suostumustieto virheellinen yli 1 % riveissä. 2 tuntia Saman päivän loppuun Kerran 4 tunnissa. DPO saa tilannetiedon välittömästi jos suostumukseen liittyy.
P3 — Normaali Yksittäisiä laaturikkomuksia, ei vaikuta kokonaisuuteen. Bottisuodatuslistassa puutteita. Dokumentoitu poikkeus. 1 työpäivä 5 työpäivää Seuraava säännöllinen katselmus

Ongelmailmoituksen kanava: Sähköposti data-tuki@uutislehti.fi tai Teams-kanava #data-ongelmat. P1-tapaukset myös puhelinsoitto Data Custodianille. Tietosuojarikkomuksissa lisäksi välitön soitto DPO:lle.

Postmortem: P1- ja P2-tapauksista kirjoitetaan juurisyyanalyysi viiden arkipäivän sisällä. Tietosuojarikkomuksissa dokumentaatio toimitetaan DPO:lle 48 tunnin kuluessa.

6. Käyttö- ja pääsykäytännöt

Pääsy: Data on avointa kaikille toimituksen ja teknisen tiimin jäsenille ilman roolikohtaisia rajoituksia. Jokainen näkee kaikki artikkelit, niiden lukijamäärät, lukuajat ja muut mittarit — myös sen, kenen kirjoittamia artikkelit ovat.

Sallitut käyttötarkoitukset:

Kielletyt käyttötarkoitukset:

Rekisteröidyn oikeudet: Lukijoita koskevat tietopyynnöt (tarkastus, poisto, siirto) ohjataan osoitteeseen tietosuoja@uutislehti.fi. Data Custodian toteuttaa poistopyynnöt 30 kalenteripäivän kuluessa.

Dataneuvoksen mielipide

Avoin data sisällä on usein parempi valinta kuin monimutkainen roolihierarkia. Kun kaikki näkevät samat luvut, syntyy yhteinen todellisuus — ei kilpailevia versioita siitä mitä "meillä menee hyvin". Toimittaja, joka näkee kollegoidenkin artikkelien lukemat, oppii nopeammin mikä toimii. Läpinäkyvyys rakentaa luottamusta enemmän kuin suojatut näkymät. RLS on oikea työkalu silloin kun datassa on oikeasti arkaluonteista tai roolisidonnaista tietoa — ei oletusasetus joka otetaan käyttöön varmuuden vuoksi.