Pivottabell

En **pivottabell** er en tabell av grupperte verdier som aggregerer de individuelle elementene fra en mer omfattende tabell (for eksempel fra en database, et regneark, eller program for virksomhetsetterretning) innenfor en eller flere diskrete kategorier. Dette sammendraget kan inneholde summer, gjennomsnitt eller annen statistikk som pivottabellen grupperer sammen ved hjelp av en valgt aggregeringsfunksjon som brukes på de grupperte verdiene. 

## Mekanikk
Typisk gjøres dataregistrering og -lagring i flattabeller, hvilket betyr at tabellen bare består av kolonner og rader, som for eksempel i den følgende tabellen som viser data om skjortetyper:

Flattabeller kan inneholde mange dataelementer, men det kan være vanskelig å få et oppsummert bilde av helheten ved å se på dem. Pivottabeller kan derimot hjelpe med å raskt oppsummere dataene og fokusere på ønsket informasjon. Bruken av en pivottabell kan være ekstremt bred og avhenger av situasjonen. Når man skal utforme en pivottabell kan man for eksempel stille seg spørsmålet "Hva er det jeg søker?" I eksemplet med skjortene kan man for eksempel lure på "Hvor mange *enheter* har vi solgt i hver *region* for hver *forsendelsesdato?*"

Et pivottabell består vanligvis av felter for *rader*, *kolonner* og *data* (eller *fakta*). I eksempelet over er kolonnen *forsendelsesdato*, raden er *region* og dataene man ønsker å se på er (summen av) *enheter*. Disse feltene tillater flere typer aggregering, inkludert: sum, gjennomsnittlig, standardavvik, telling, med mer. I dette tilfellet vises det totale antallet sendte enheter ved hjelp av en *sum*-aggregering.

## Implementering
Ved hjelp av eksempelet ovenfor finner programvaren alle forskjellige verdier for *region*. I dette tilfellet er de *nord*, *sør*, *øst* og *vest*. Videre finner programmet alle forskjellige verdier for *forsendelsesdato*. Basert på aggregeringstypen (her: *sum*) vil faktaene (her: *enheter*) oppsummeres, og vil vises i et flerdimensjonalt diagram. I eksemplet ovenfor er det første datumet 66. Dette tallet ble regnet ut ved å finne alle poster hvor både *region* er *øst* og *forsendelsesdato* er *2005-01-31*, og deretter lagt sammen *enheter* for denne samlingen av oppføringer (altså cellene E2 til E7) sammen for å få et sluttresultat.

Pivottabeller opprettes vanligvis ikke automatisk. I for eksempel Microsoft Excel må man først velge alle dataene i den opprinnelige tabellen og deretter gå til Sett inn-fanen og velge "Pivottabell" (eller "Pivotdiagram"). Brukeren vil da få muligheten til å enten sette inn pivottabellen i et eksisterende ark eller opprette et nytt ark for å huse pivottabellen. Det vil da komme opp en feltliste for pivottabellen som viser viser alle kolonneoverskriftene i dataene. I en tabell over salgsdata for et selskap kan kolonneoverskrifter inkludere salgsdato, selger, vare solgt, farge på varen, solgte enheter, enhetspris, og totalpris. Dette gjør dataene lettere tilgjengelige.

Feltene som blir opprettet vil vanligvis bli synlige på høyre side av regnearket, og vanligvis vil utformingsvelgeren for pivottabellen vises under denne listen. Pivottabellfeltene er byggesteinene i pivottabeller. Hvert av feltene fra listen kan dras videre til denne utformeren, som har fire alternativer:

# Filter
# Kolonne
# Rad
# Verdi

Utformingen kan til en viss grad være gjenstand for personlig smak, og man kan for eksempel velge å transponere en tabell ved å flytte om på rader og kolonner.

I noen programmer kan pivottabeller brukes til analyse av spørreskjemaer med valgfrie svar, men noen implementasjoner av pivottabeller tillater ikke disse brukstilfellene. Eksempelvis er ikke implementasjonen i LibreOffice Calc siden 2012 i stand til å behandle tomme celler.

### Filter
Et rapportfilter vil gjelde for en hel tabell. Dersom for eksempel feltet "farge på varen" dras til filter-området vil tabellen som er konstruert få et rapportfilter for "farge på varen" satt inn over tabellen. Dette rapportfilteret vil få rullegardinalternativer (i eksempelet ovenfor: svart, rødt og hvitt). Når et alternativ blir valgt fra nedtrekkslisten vil tabellen bare vise dataene fra de radene som har den (eller de) valgte fargene.

### Kolonne
Kolonneetiketter brukes for å anvende et filter på en eller flere kolonner som må vises i pivottabellen. Dersom for eksempel feltet "selger" dras til kolonne-området vil pivottabellen få verdier fra kolonnen selger, altså vil man få et antall kolonner likt antallet selgere. Det vil også vises en ekstra kolonne for totalsum. I eksemplet ovenfor ville dette opprettet fem kolonner i tabellen, med en for hver selger, og totalsum. Det vil være et filter for kolonne-etiketter ovenfor dataene hvor man kan velge eller fjerne bestemt(e) selger(e) for pivottabellen. 

Denne tabellen vil ikke ha noen numeriske verdier ettersom ingen numeriske felter er valgt, men når numeriske felter velges vil verdiene automatisk oppdateres i totalsum-kolonnen.  

### Rad
Radetiketter brukes for å anvende et filter på en eller flere rader som må vises i pivottabellen. Dersom for eksempel feltet "selger" dras til rad-området vil den andre utdatatabellen som konstruert ha verdier fra selger-kolonnen, altså vil man ha et antall rader som er likt antallet selgere. Det vil også bli lagt til en ekstra rad med "totalsum". I eksemplet ovenfor ville man fått 5 rader i tabellen – én for hver av de 4 selgerne og én for totalsum. Med radetikettene vil man få et filter over dataene hvor man kan velge eller velge bort bestemte selgere for pivottabellen. 

Denne tabellen vil ikke ha noen numeriske verdier ettersom ingen numeriske felter er valgt, men når numeriske felter velges vil verdiene automatisk oppdateres i totalsum-kolonnen.

### Verdier
Verdi-feltet tar vanligvis et felt som har numeriske verdier som kan brukes til ulike typer beregninger. Bruk av tekstverdier vil imidlertid ikke være feil, men vil istedet for numerisk sum resultere i telling av antall elementer. I eksempelet ovenfor: Dersom feltet for "antall solgte enheter" dras til verdi-feltet sammen med radetiketten "selger" vil det legges til en ny kolonne for "sum av solgte enheter" som vil ha verdier mot hver selger.

## Applikasjonsstøtte
Pivottabeller eller pivotfunksjonalitet er en integrert del av mange programmer for regneark, noe databaseprogramvare, samt at det finnes i andre verktøy for datavisualisering og virksomhetsetterretning.

### Regneark
* Microsoft Excel støtter pivottabeller, og kan visualiseres gjennom pivotdiagrammer
* Apache POI
* LibreOffice Calc og Openoffice Calc støtter pivottabeller. Før versjon 3.4 ble denne funksjonen kalt "DataPilot".
* Calligra Sheets støtter pivottabeller.
* Google Sheets støtter pivottabeller.
* Numbers fra Apple fikk pivottabellstøtte i versjon 11.2. 

### Databasestøtte
* PostgreSQL er et objekt-relasjons-databasehåndteringssystem som tillater opprettelse av pivottabeller ved hjelp av *tablefunc* modulen.
* MariaDB er en MySQL-forgrening som tillater pivottabeller ved hjelp av CONNECT-lagringsmotoren.
* Microsoft Access støtter pivotspørringer under navnet crosstab-spørring.
* Microsoft SQL Server støtter pivot som fra SQL Server 2016 med nøkkelordene FROM...PIVOT
* Oracle Database støtter operasjonen PIVOT
* Noen populære databaser som ikke direkte støtter pivotfunksjonalitet, for eksempel SQLite, kan vanligvis simulere pivotfunksjonalitet ved hjelp av innebygde funksjoner, dynamisk SQL eller under-spørringer. Problemet med pivotering i slike tilfeller er vanligvis at antall utdatakolonner må være kjent når spørringen begynner å kjøre, men for pivotering er ikke dette mulig da antall kolonner er basert på selve dataene. Derfor må navnene være hardkodet eller så må spørringen som skal utføres selv opprettes dynamisk (hvilket betyr før hvert kall) basert på dataene.

## Se også
* Datautvinning
* Datavarehus
* Datavisualisering
* Krysstabell
* OLAP-kube
* Relasjonsalgebra
* Uttrekk, transformasjon og lasting

## Referanser