Faktatabell

Innen datavarehus er en **faktatabell** en tabell som består av målinger, beregninger eller fakta fra en forretningsprosess. Det ligger i midten av en stjernemodell eller en snøfnuggmodell omgitt av dimensjonstabeller. Når flere faktatabeller brukes kan de settes opp som en faktasammenstilling. En faktatabell har vanligvis to typer kolonner; (1) de som inneholder fakta, og (2) de som er en fremmednøkkel til dimensjonstabeller. Primærnøkkelen i en faktatabell er vanligvis en sammensatt nøkkel som består av alle dens fremmednøkler. Faktatabeller utgjør innholdet i datavarehuset, og lagrer ulike typer mål som additive, ikke-additive og semi-additive mål.

Faktatabeller gir (vanligvis) additive verdier som fungerer som uavhengige variabler, og som brukes for å analysere de dimensjonale attributtene. Faktatabeller er ofte definert av deres "finhet" (*grain*). Graden av finhet sier representerer det mest atomiske nivået som fakta kan defineres på. Finheten til en faktatabell for salg kan for eksempel beskrives som "salgsvolum per dag per produkt per butikk". Hver oppføring i denne faktatabellen er derfor unikt definert etter en dag , et produkt og en butikk. Andre dimensjoner kan være medlemmer av denne faktatabellen (som for eksempel lokasjon/region), men disse bidrar ikke til ytterligere unikhet til faktaoppføringene, men gir i stedet generell innsikt på et høyere aggregeringsnivå (en region inneholder mange butikker).

Faktatabeller er ofte smale tabeller (få kolonner), mens dimensjonstabeller ofte er brede tabeller.

## Eksempel
Dersom forretningsprosessen er salg vil den tilsvarende faktatabellen vanligvis inneholde kolonner som representerer både råe fakta og aggregeringer i rader som:

* *120&nbsp;000 kr* er "salg for Tromsø-butikken for 2022-01-15".
* *340&nbsp;000 kr* er "salg for Harstad-butikken for 2022-01-15"
* *220&nbsp;000 kr* er "salg for Hammerfest-butikken for 2022-01-15"
* *210&nbsp;000 kr* er "gjennomsnittlig daglig salg for Harstad-butikken for 2022-01"
* *650&nbsp;000 kr* er "gjennomsnittlig daglig salg for Harstad-butikken for 2022-02"
* *330&nbsp;000 kr* er "gjennomsnittlig daglig salg for Harstad-butikken for år 2022"

"*Gjennomsnittlig daglig salg*" er en måling som er lagret i faktatabellen. Faktatabellen inneholder også fremmednøkler fra dimensjonstabeller, hvor tidsrekker (for eksempel datoer) og andre dimensjoner (for eksempel butikkplassering, selger, produkt) lagres.

Alle fremmednøkler mellom fakta- og dimensjonstabeller bør være surrogatnøkler, og ikke gjenbrukte nøkler fra operasjonelle data.

## Måltyper
* **Additive**: Målinger som kan legges til over alle dimensjoner.
* **Ikke-additiv**: Målinger som ikke kan legges til over noen dimensjon.
* **Semi-additive**: Målinger som kan legges til over noen dimensjoner.

En faktatabell kan enten inneholde fakta på detaljnivå eller fakta som har blitt aggregert (faktatabeller som inneholder aggregerte fakta kalles ofte i stedet for *sammendragstabeller*).

Spesiell forsiktighet må utvises ved håndtering av forhold og prosentandeler. En god designregel er å aldri lagre prosenter eller forholdstall i faktisk tabeller, men bare beregne disse i datatilgangsverktøyet. Dermed lagrer man bare telleren og nevneren i faktatabellen, som deretter kan aggregeres, og de aggregerte lagrede verdiene kan deretter brukes til å beregne forhold eller prosentandeler i datatilgangsverktøyet.

I praksis er det også mulig å ha et faktatabell som ikke inneholder noen målinger eller fakta. Disse tabellene kalles ofte "faktaløse faktatabeller" eller "assosiative tabeller".

En faktaløs faktatabell kan brukes for modellering av mange-til-mange-relasjoner eller for å fange tidsstempel for hendelser.

## Typer av faktatabeller
Det er 4 grunnleggende måleaktiviteter som karakteriserer alle faktatabeller.

;Transaksjonelle faktatabeller: En transaksjonstabell er den mest grunnleggende faktatabellen. Finheten til en transaksjons-faktatabell er vanligvis angitt som "en rad per linje i en transaksjon", for eksempel hver linje på en kvittering. Vanligvis inneholder en transaksjonsfaktatabell data på det mest detaljerte nivået, hvilket fører til at den har et stort antall dimensjoner knyttet til det.
;Periodiske øyeblikksbilder: Det periodiske øyeblikksbildet gir, som navnet antyder, et "bilde av øyeblikket", hvor øyeblikket kan være en hvilken som helst definert tidsperiode, for eksempel et resultatsammendrag av en selger i løpet av forrige måned. En periodisk øyeblikksbilde-tabell er avhengig av transaksjonstabellen, da den trenger de detaljerte dataene i transaksjonsfaktatabellen for å levere den valgte resultatutgangen.
;Akkumulerende øyeblikksbilder: Denne typen faktatabell brukes til å vise aktiviteten til en prosess som har en veldefinert begynnelse og slutt, for eksempel behandling av en ordre. En ordre går gjennom bestemte trinn til den er fullstendig behandlet. Når trinnene for å oppfylle ordren er fullført oppdateres den tilknyttede raden i faktatabellen. En akkumulerende øyeblikksbilde-tabell har ofte flere datokolonner som hver representerer en milepæl i prosessen. Det er derfor viktig å ha en oppføring i den tilknyttede datodimensjonen som representerer en plassholder for ukjent dato, ettersom mange av milepæl-datoene er ukjente når raden opprettes.
;Temporale øyeblikksbilder: Ved å bruke temporal databaseteori og tiøhørende modelleringsteknikker kan man lage en temporal øyeblikks-faktatabell (*temporal snapshot fact table*) som gjør det mulig å ha tilsvarende daglige øyeblikksbilder uten egentlig å ha daglige øyeblikksbilder. Dette introduserer begrepet tidsintervaller til en faktatabell slik at man kan spare mye plass og optimere ytelse samtidig som sluttbrukeren får den logiske ekvivalenten til å ha "øyeblikksbildet" de er interessert i.

## Steg i utformingen av en faktatabell
Én metode for å utforme faktatabeller kan være følgende:

* Identifiser en forretningsprosess som skal analyseres (eksempelvis salg).
* Identifiser målinger av fakta (salg i kroner) ved å stille spørsmål som "hvilket antall av x er relevant for forretningsprosessen?", hvor x kan erstattes med ulike alternativer som gir mening i forbindelse med virksomheten.
* Identifiser dimensjoner for fakta (produktdimensjon, stedsdimensjon, tidsdimensjon, organisasjonsdimensjon) ved å stille spørsmål som gir mening i forbindelse med forretningen, som "analyse av x" hvor x erstattes med emnet som skal testes.
* Oppgi kolonnene som beskriver hver dimensjon (regionnavn, avdelingsnavn, navn på forretningsenhet).
* Bestem det laveste nivået (granulariteten) av sammendraget i en faktatabell (for eksempel salg i kroner).

En alternativ tilnærming er den 4-stegs designprosessen beskrevet av Ralph Kimball: (1) velg forretningsprosessen, (2) erklær finheten, (3) identifiser dimensjonene, og (4) identifiser fakta.

## Referanser