OLAP-kube

En **OLAP-kube** er en flerdimensjonal matrise av data. Online analytisk prosessering (OLAP) er en metodikk hvor man benytter datamaskiner for å analysere data med mål om å få etterretning. Begrepet *kube* refererer her til et flerdimensjonalt datasett som også noen ganger kalles en hyperkube dersom dimensjonsantallet er større enn 3.

## Terminologi
En kube kan betraktes som en flerdimensjonal generalisering av et to- eller tredimensjonalt regneark. Et selskap kan for eksempel ønske å oppsummere økonomiske data etter produkt, tidsperiode og by for å sammenligne faktiske og budsjetterte utgifter. Dataenes dimensjoner er da produkt, tid, by og scenario (faktisk og budsjettert).

Kube brukes som kortnavn for en flerdimensjonal datamengde, gitt at dataene kan ha et vilkårlig antall dimensjoner. Begrepet hyperkube brukes noen ganger, særlig for data med mer enn tre dimensjoner. En datakube er ikke en kube i streng matematisk forstand innen eukledisk geometri, da sidene ikke nødvendigvis er like, men begrepet brukes likevel mye.

En skive (*slice*) er en delmengde av dataene generert ved å velge én verdi for en dimensjon og bare vise de andre dataene i kuben for den verdien (eksempelvis bare dataene ved et gitt tidspunkt). Regneark er todimensjonale, og ved å dele opp en kube i flere skiver eller ved bruk av andre teknikker kan man til slutt visualisere flerdimensjonale data i regneark.

Hver celle i kuben har et tall som representerer noen mål på virksomheten, som for eksempel måltall for salg, fortjeneste, utgifter, budsjett og prognose.

OLAP-data lagres vanligvis i en stjernemodell eller snøflakmodell i en relasjonsdatabase i et datavarehus, eller i spesielle datahåndteringssystem. Målene er utledet fra oppføringer (*records*) i en faktatabell og dimensjonene er avledet fra dimensjonstabeller.

## Hierarki
Elementene i en dimensjon kan organiseres som et hierarki i form av en mengde foreldre/barn-relasjoner, vanligvis hvor et foreldremedlem oppsummerer sine barn. Foreldreelementene kan videre aggregeres som barna til en annen forelder.

Eksempelvis er 2005 mai sin forelder 2005 andre kvartal, som i sin tur er barn av året 2005. På samme måte er byer barn av regionene, produkter kan sortere under produktgrupper, og individuelle utgifter under utgiftsposter.

## Operasjoner
Å se på data som en kube med hierarkiske dimensjoner medfører at man kan utføre operasjoner som konseptuelt er relativt rett frem og på denne måten legge til rette for analyse. Samkjøring av datainnhold med en kjente former for visualisering kan legge til rette for produktiv og lærerik analyse. 

Den brukerinitierte prosessen med å navigere ved å gjøre visningskall interaktivt kalles *slice and dice*, og foregår ved at brukeren spesifiserer ønskede skiver gjennom rotasjoner og å bore ned eller opp (*drill down/up*). Vanlige operasjoner inkluderer oppdeling i skiver og terninger (*slice and dice*), bore ned, rulle opp og pivotering.

*Slicing* (oppdeling i skiver) vil si at man velger en rektangulært delmengde av en kube ved å velge en enkelt verdi for en av dens dimensjoner, og dermed lager en ny kube med én mindre dimensjon færre. Figuren viser en grafisk fremstilling av *slicing*-operasjonen: Salgstallene for alle salgsregioner og alle produktkategorier til selskapet i år 2005 og 2006 er "skåret" ut av datakuben.

er handlingen med å plukke en rektangulær delmengde av en kube ved å velge en enkelt verdi for en av dens dimensjoner, og skape en ny kube med en færre dimensjon. Bildet viser en slicing-operasjon: salgstallene for alle salgsregioner og alle produktkategorier av selskapet i år 2005 og 2006 er "skåret" ut av datakuben.

*Dicing* (oppdeling i terninger) gir mindre delkuber slik at analytikeren kan arbeide med bestemte verdier av flere dimensjoner. Figuren viser en grafisk fremstilling av *dicing*-operasjonen: Den nye kuben viser salgstallene for et begrenset antall produktkategorier, mens tids- og regiondimensjonene dekker samme område som før.

*Drilldown* og *drillup* lar brukeren navigere mellom nivåer av data som spenner fra mest oppsummerende ("opp") til det mest detaljerte nivået ("ned"). Figuren viser en grafisk fremstilling av *drilldown*-operasjonen: Analytikeren flytter seg ned fra sammendragskategorien "Utendørs verneutstyr" for å se salgstallene for de enkelte produktene.

*Rollup* (oppsamling) innebærer å oppsummere dataene langs en dimensjon. Oppsummeringsregelen kan være en aggregeringsfunksjon, som for eksempel å beregne summer langs et hierarki eller bruke en mengde formler som "fortjeneste = salg - utgifter". Generelle aggregeringsfunksjoner kan være kostbare å beregne når de rulles opp: Hvis de ikke kan bestemmes fra kubens celler må de beregnes fra basisdataene, enten online (sakte) eller være forhåndberegnet for mulig bruk (tar stor plass). Aggregeringsfunksjoner som kan bestemmes fra cellene er kjent som dekomponerbare aggregeringsfunksjoner, og gjør det mulig med effektive beregninger. For eksempel er det lett å støtte `COUNT, MAX, MIN,` og `SUM` i OLAP, ettersom disse kan beregnes for hver celle i OLAP-kuben og deretter rulles opp, ettersom en totalsum (eller opptellinger, og så videre) er summen av delsummer, men det er vanskelig å støtte `MEDIAN`, ettersom det må beregnes for hver visning separat (medianen av en mengde er ikke medianen av medianen til delmengdene).

Pivotering medfører at analytikeren roterer kuben i rommet slik at man ser dataene fra ulike sider. For eksempel kan byer ordnes vertikalt og produkter horisontalt mens man ser på data for et bestemt kvartal. Pivotering kan erstatte produkter med tidsperioder for å se data over tid for et enkelt produkt.

Figuren viser en pivoteringsoperasjon: Hele kuben roteres, hvilket gir et annet perspektiv på dataene.

## Matematisk definisjon
Innen databaseteori er en OLAP-kube en abstrakt representasjon av en projeksjon av en relasjon i en relasjonsdatabase. Gitt en relasjons av orden *N*, anta en projeksjon som dekker over *X*, *Y* og *Z* som nøkkel og *W* som gjenværende attributt. Ved å karakterisere dette som en funksjon,

: *f* : (*X*,*Y*,*Z*) → *W*,

vil egenskapene *X*, *Y* og *Z* tilsvare kubens akser, mens *W*-verdien tilsvarer dataelementet som fyller ut hver celle i kuben.

Siden todimensjonale utgangsenheter forsåvidt ikke lett kan karakterisere tre dimensjoner er det mer praktisk å projisere "skiver" av datakuben (med *projisering* menes her den klassiske vektoranalytiske meningen av dimensjonsreduksjon, ikke projisering i SQL-forstand, selv om de to er konseptuelt like),

: *g* : (*X*,*Y*) → *W*

som kan undertrykke en primærnøkkel, men fremdeles ha en viss semantisk signifikans, muligens en skive av den triadiske funksjonelle representasjonen for en gitt *Z*-verdi av interesse.

Motivasjon bak OLAP kan spores tilbake til 1980-tallet med *cross-tabbed report*-paradigmet for databasehåndteringssystem, og tidligere krysstabeller fra 1904. Resultatet er en visning med utseende som et regneark hvor verdier av *X* fyller rad $1, verdier av *Y* fyller ut kolonne $A, og verdier av *g* : ( *X*, *Y* ) → *W* fyller de enkelte cellene ved koblinger av *X*- merkede kolonner og *Y*- merkede rader så å si "sørøst" for $B$2, med $B$2 inkludert.

## Se også
* Virksomhetsetterretning
* Datatorg
* Datautvinning

## Referanser