Datu izvilkšana, transformēšana un ielāde

**Datu izvilkšana, transformēšana un ielāde** (*ETL — extract, transform and load*) ir viens no komercizpētes soļiem, kurā datus izvelk no viena vai vairākiem datu avotiem, transformē un ielādē specifiskās mērķa sistēmās.

Datu noliktavu radīšana ietver sevī liela apjoma datu apkopošanu, kas tiek iegūti no dažādiem avotiem. Tā kā katrā avotā iespējams pastāv citādas datu ievades metodoloģijas, datu izvilkšanas, transformēšanas un ielādes process ir nepieciešams, lai pēcāk būtu iespējams veikt manipulācijas ar iegūtajiem datiem. Ar datiem, kas nav standartizēti, tas nav iespējams.

Datu izvilkšanas, transformēšanas un ielādes process sastāv no sekojošiem posmiem:
* Datu izvilkšana no operacionālam vai arhivētām sistēmām, kas ir informācijas pamatavots datu noliktavām
* Datu transformēšana — datu tīrīšana, standartizēšana, filtrēšana u.c.
* Datu ielāde datu noliktavā vai citā datu glabātuvē

Ja dati tiek apstrādāti brīdī, kad datubāzē tie tiek ievadīti (sistēma „klausās” datus, tos apstrādājot un ielādējot pēc nepieciešamības), atsevišķs datu izvilkšanas process var nenotikt.

## Datu izvilkšana
Datus, kas tiks izmantoti datu noliktavās, vispirms ir nepieciešams izvilkt (*extract*) no esošām sistēmām. Liela apjoma izvilkšana noris datu noliktavas radīšanas brīdī, bet periodiska, mazāka apjoma — tās atjaunošanas brīžos.

Ir būtiski, lai dati informācijas avotā būtu bez loģikas kļūdām, piemēram, ja ierakstam par veiktu pirkumu trūkst atbilstoša ieraksta par pircēju, šī kļūda ir jānovērš pirms izvilkšanas. Lai no tā izvairītos, datubāžu izstrādātāji mēdz ieviest kļūdu pārbaudes algoritmus savās datubāzēs. Šīs darbības ir nepieciešams, lai ETL process noritētu pēc iespējas gludāk.
Bieži neatbilstības var novērot, ja informācijas sistēmas pieļauj ievadīt datus brīvā formā. Šādos gadījumos dati, kas saturiski ir identiski, var būtiski atšķirties formas ziņā. Pirms tie tiek izmantoti analīzei, datus ir nepieciešams standartizēt.

## Transformēšana
Lielu daļu no transformēšanas procedūrām var veikt brīdī, kad dati tiek izvilkti no avota sistēmām. Tomēr mēdz būt arī nepieciešamība pēc papildu datu izmaiņām. Piemēram, neviendabīgi dati, kas iegūti no dažādām sistēmām, pēc izvilkšanas ir jāvienādo, jātīra, jāformatē utt.

Ne visa transformēšana notiek izvilkšanas brīdī; ja visi darbi tiek veikti vienlaicīgi, tas var negatīvi ietekmēt avota sistēmu ātrdarbību un darbību vispār. Tādos gadījumos transformēšanas process tiek novilcināts līdz izvilkšanas beigām.

Pēc izvilkšanas procesa beigšanās, dati var tikt ievietoti pagaidu glabātuvē. Šajā vietnē tiem tiek veiktas visas nepieciešamās transformācijas un tīrīšanas operācijas pirms dati tiek ielādēti datu noliktavā. Šī pagaidu glabātuve var būt gan atsevišķa datubāze, gan arī atsevišķas tabulas datu noliktavas ietvaros.

Tīrīšanas un transformācijas fāzes laikā tās izstrādātāji var pārbaudīt datu atbilstību, transformēt to vienotos un vispārējos formātos un iekļaut aizstājēj atslēgas. Var būt nepieciešams veikt manuālas operācijas, lai likvidētu datu neatbilstības un neskaidrus teksta laukos ievadītus datus.

Bieži izmantotas transformācijas ir:
# Atsevišķu kolonnu izvēle ielādēšana
# Kodētu lielumu pārdēvēšana (piemēram, ja datu avotā ar 1 apzīmē vīrieša dzimumu, bet datu noliktavā — ar V)
# Jaunu aprēķinātu lielumu ieviešana (piemēram, ienākumi = pārdotais daudzums * vienības cena)
# Viena datuma lauka sadalīšana atsevišķā dienā, mēnesī un gadā
# Filtrēšana
# Kārtošana
# Datu, kas nāk no vairākiem avotiem, apvienošana (piemēram, merge)
# Datu apkopošana (piemēram, vairāku datu rindu apkopošana, lai iegūtu informāciju par kopējiem pārdošanas datiem katram veikalam, reģionam u.tml.)
# Aizstājējatslēgu ģenerēšana
# *Transposing* un *pivoting* (pārvērst vairākas kolonnas rindās un otrādi)
# Vienas kolonnas sadalīšana vairākās
# Jebkāda veida datu validēšana. Ja tā ir neveiksmīga, datus var pieņemt daļēji vai nepieņemt vispār.

## Ielāde
Kad dati ir attīrīti un transformēti atbilstoši datu noliktavas struktūrai, tos ir iespējas ielādēt. *ETL* izstrādātāji var veikt dažas, nelielas transformācijas ielādes procesa laikā, tomēr visas būtiskās pārmaiņas uz ielādes brīdi jau ir veiktas.

Sākotnēji ielāde datu noliktavā sastāv no tabulu aizpildīšanas noliktavas shēmā un to apstiprināšanas izmantošanai.

Ielāde datu noliktavās bieži satur liela apjoma datu pārsūtīšanu no avota sistēmām, pagaidu datubāzēm u.c. avotiem uz noliktavu. Tā kā šī operācija iesaistītajām sistēmām ir noslogojoša, tā parasti tiek veikta laika posmā, kad sistēma tiek izmantota vismazāk.
Pēc tam, kad dati ir ielādēti, parasti tiek veikta ierakstu atbilstību analīze, lai pārbaudītu, vai dati no faktu un dimensiju tabulām savstarpēji korekti saistīti.
Pastāv dažādi ielādes veidi. Parasti dati tiek vai nu pārrakstīti, vai arī nepārtraukti papildināti. Lielākas datu noliktavas nodrošina arī iespēju aplūkot visu veikto izmaiņu vēsturi.
Pastāv arī iespējas ne tikai pilnībā ielādēt/pārlādēt visu datu noliktavu, bet gan atjaunot tikai tās daļu, kas būtiski samazina gan sistēmas noslodzi, gan arī uzņēmuma izdevumus.

## Biežāk izmantotie rīki
Bieži izmantoti *ETL* rīki ir:
* Oracle Data Integrator
* IBM Websphere DataStage
* Informatica PowerCenter
* Oracle Warehouse Builder
* Ab Initio
* Pentaho Data Integration — Kettle Project (atvērtā koda programmatūra)
* CloverETL
* SAS ETL studio
* Cognos Decisionstream
* Business Objects Data Integrator (BODI)
* Microsoft SQL Server Integration Services (SSIS)

## Atsauces