OLAP

Iz MaFiRaWiki

Ta članek ali del članka je v delu. Veseli bomo, če ga boste dopolnili in popravili.

Kaj pomeni to opozorilo?

Vsebina

Kaj je OLAP?

OLAP je kratica za OnLine Analytical processing (sprotna analitična obdelava). Je programska oprema ali pa postopek, vgrajen v programsko opremo, ki omogoča, da v kratkem času analiziramo veliko podatkov. Praviloma prikazuje podatke večrazsežno oz. večdimenzionalno. Taki strukturi pravimo OLAP kocka.

Kaj je OLAP Kocka?

OLAP Kocka je osnovna podatkovna struktura v večdimenzionalnem sistemu OLAP. Predstavlja množico podatkov, ki so shranjeni in prikazani na večdimenzionalen način. Kocko definira množica dimenzij in meritev. Dimenzije predstavljajo kategorijo po katerih analiziramo podatke, meritve, pa predstavljajo vrednost ali velikost podatka, ki ga analiziramo.

Množica podatkov kocke je pogosto sestavljena iz podmnožice podatkov iz podatkovnega skladišča. Iz podmnožice podatkovnega skladišča pa zato, ker taka baza ni preobremenjena s tekočimi posli, zato je bolj primerna za procesiranje kock kot živa baza. Baza podatkovno skladišče se polni v nekem določenem časovnem intervalu (enkrat na dan, enkrat na teden, ... ) po potrebi. Tudi procesiranje kock izvajamo v nekem časovnem intervalu, ki ga sami določimo. Pri procesiranju kocke si kocka pripravi tabelo oz. strukturo, ki vsebuje vnaprej preračunane podatke za kocko, še preden uporabnik dostopi do kocke.

Razlika med bazo podatkov in skladiščem podatkov:

Baza podatkov Skladišče podatkov
- podpira delo s podatki - podpira analizo s podatki
- vnos in branje podatkov - branje podatkov
- dinamično spreminjanje vsebine - podatki so statični, le občasno ažuriranje
- struktura se redko spreminja - strukturo prilagajamo potrebam
- veliko uporabnikov - malo uporabnikov
- transakcijske obdelave - analitične in sintetične obdelave
- vnaprej določeni izpisi ali poizvedovanja s SQL - za analize, korelacije, statistike, OLAP

Za boljšo predstavo si poglejmo primer enostavne kocke s tremi dimenzijami in eno meritvijo:


Primer OLAP Kocke

Vsaka kocka vsebuje shemo.

Shema kocke

Shema kocke je množica povezanih tabel v podatkovnem skladišču, od koder kocka črpa vir podatkov. Tabelo, ki se nahaja v središču sheme imenujemo tabela dejstev, vir meritev kocke. Ostale tabele so tabele dimenzij, vir dimenzij kocke. Strukturo kocke definirajo njene meritve in dimenzije, ki izhajajo iz tabel podatkovnega vira kocke. Množica tabel iz katere izhajajo meritve in dimenzije se imenuje shema kocke. Vsaka shema kocke je sestavljena iz tabele dejstev in ene ali več tabele dimenzij. Meritve kocke izhajajo iz tabele dejstev, medtem ko dimenzije kocke, pa iz tabel dimenzij.

Obstajata dva tipa sheme:

  1. zvezdna shema
  2. snežinkasta shema

Zvezdna shema

Ime izhaja iz oblike podatkovnega modela, glede na to kako so v njem razporejene tabele. Model vsebuje osrednjo tabelo, ki ji pravimo tabela dejstev. Tabela dejstev je obkrožena z večjim številom dimenzijskih tabel.

Tabela dejstev zajema podatke o prodaji in ključe vseh dimenzij, preko katerih je tabela dejstev povezana z ostalimi dimenzijskimi tabeli, kot so v našem primeru zvezdne sheme, obdobje, kupec, produkt in skladišče.

Tabela dejstev vsebuje poleg ključev, preko katerih je povezana z ostalimi dimenzijskimi tabelami, tudi dva atributa, ki vsebujeta vrednost, v našem primeru količino prodanih izdelkov in vrednost v denarju.

Primer zvezdne sheme

Slika:StarShema1.jpg


Snežinkasta shema

Model snežinkaste sheme je izpeljan iz zvezdne sheme. Dimenzijske tabele v snežinkasti shemi vsebujejo normalizirane podatke, kar pa dosežemo z dodatno tabelo, ter s tem preprečimo redundanco (podvojevanje atributov). Tako prihranimo prostor za shranjevanje podatkov vendar izgubimo efektivnost, ker so poizvedbe kompleksnejše, zato snežinkasta shema ni tako priljubljena kot zvezdna.

Glavna razlika med zvezdno in snežinkasto shemo je vidna pri določanju dimenzijskih tabel. Iz dimenzijske tabele v katerih se vrednosti v poljih posameznih atributov ponavljajo, se takšne atribute prenese v pomožno tabelo, ki je z dimenzijsko tabelo povezana s ključem. Nadaljnja normalizacija lahko sledi tudi v pomožni tabeli h kateri je povezana še ena pomožna tabela.

Primer snežinkaste sheme

Slika:SnowFlakeShema.JPG

Dimenzije

Dimenzije so sestavni atribut kocke. Vsaka dimenzija je v bazi podatkov predstavljena kot dimenzijska tabela, ki vsebuje atribute, ki opisujejo to dimenzijo. Dimenzija lahko vsebuje enega ali več nivojev, kar nam omogoča, da se lahko spuščamo in dvigamo znotraj ene dimenzije. Torej dimenzije si lahko ogledujemo na različnih hierarhičnih ravneh. Dimenzije kategorizirajo podatke kock na hierarhični način, sestavljene iz več nivojev. Nivo je ime množice članov v hierarhiji dimenzije tako da so vsi člani množice enako oddaljeni od korena do hierarhije.

Recimo, da razširimo časovno dimenzijo. V našem primeru bo vsebovala 3 nivoje, lahko bi jih tudi več. Odvisno je koliko želimo biti natančni oz. odvisno je kaj želimo analizirati. Včasih nam sekunde tudi veliko pomenijo.

Pri prodaji izdelkov nam zadostujejo 3 nivoju, to so:

  1. Leto
  2. Mesec
  3. Dan

V našem primeru bodo nivoji oz. množice članov vsebovali naslednje člane:

  1. v nivoju Leto bomo imeli člane 2003, 2004, 2005, 2006, 2007
  2. v nivoju Mesec bomo imeli člane Januar, Februar, Marec, ..., December
  3. v nivoju Dan bomo imeli člane od prvega dne meritve 1.1.2004, pa do zadnjega dne meritve, ki je odvisna od zadnjega vnosa datuma prodaje, če delamo analizo nad živo bazo, če pa delamo analizo nad podatkovnim skladiščem bo zadnji tisti datum, kadar je bilo zadnje polnjenje iz žive baze podatkov v podatkovno skladišče.

  4. Člani so znotraj dimenzije urejeni hierarhično, kar pomeni, da je nadrejeni član vedno seštevek vseh njemu podrejenih članov. Iz stolpcev tabele dimenzije so izpeljani nivoji, ki razvrščajo člane po hierarhiji. Glede na dimenzijo so podatki predstavljeni od najvišjega (najbolj povzetega, splošnega) do najnižjega (najbolj podrobnega, specifičnega).

    Dimenzije so vidiki, ki jih podjetje hoče analizirati(npr. obdobje, kupec, produkt,...). Tako lahko na podatke gledamo iz več vidikov. Npr. gledamo prodajo izdelka glede na kupca, prodajo izdelka glede na lokacijo, prodajo izdelka glede na čas in kupca, prodaja izdelka glede na kupca, skladišče in čas,...


    Hierarhična predstavitev dimenzij, ki vsebujejo več kot en nivo

    Slika:HierarhijaDimenzij.JPG

    Lahko pa imamo dimenzijo kupec, ki vsebuje samo en nivo z imenom Kupec.

    Poznamo dve vrsti dimenzij.

    Privatna dimenzija

    Taka dimenzija se uporablja samo v eni kocki. Kocka si take dimenzije ne more deliti z drugo kocko. Vzemimo za primer kocki Prodaja in Finance, kjer bi analizirali prilive in odlive. Nobenega pomena ne bi imelo, da si kocki delita dimenzijo produkt.

    Deljene dimenzije

    Take dimenzije si kocke lahko delijo med sabo. Pogosto si kocke med saboj delijo časovno dimenzijo. V primeru, da imamo kocki Pokritje (pokritje prodaje izdelka) in kocko Prodaje, si kocki lahko delita dimenzijo produkt.

    Omenila sem le nekaj primerov. Takih primerov je veliko.

    Dimenzije kocke razdelijo numerične podatke (meritve) za analizo.

    Meritve

    Meritev v kocki je množica vrednosti, ki temelji na stolpcu v tabeli dejstev kocke in je pogosto numerična. Vrednosti za vsako meritev vsebuje celica kocke, katera je najosnovnejši element kocke. Za meritev je podana funkcija agregacije, ki določa na kakšen način so vrednosti iz nižjih nivojev povzete, združene na višjem nivoju. Agregacije so vnaprej izračunani in shranjeni povzetki podatkov, ki izboljšajo odzivne čase poizvedb. Kocka lahko vsebuje več meritev. V našem primeru , če gledamo kocko prodaje ima meri količino prodanih izdelkov in vrednost prodanih izdelkov.

    Primer gradnje kocke

Osebna orodja