I en datamodell har hver kolonne en tilknyttet datatype som spesifiserer typen data kolonnen kan ta: heltall, desimaltall, tekst, valutadata, datoer og klokkeslett og så videre. Datatypen bestemmer også hva slags operasjoner du kan utføre på kolonnen, og hvor mye minne det tar å lagre verdiene i kolonnen.
Hvis du bruker Power Pivot-tillegget, kan du endre datatypen for en kolonne. Du må kanskje gjøre dette hvis en datokolonne ble importert som en streng, men den må være noe annet. Hvis du vil ha mer informasjon, kan du se Angi datatypen for en kolonne i Power Pivot.
I denne artikkelen
Sammendrag av datatyper
Tabellen nedenfor viser datatyper som støttes i en datamodell. Når du importerer data eller bruker en verdi i en formel, konverteres dataene til en av disse datatypene selv om den opprinnelige datakilden inneholder en annen datatype. Verdier som er et resultat av formler, bruker også disse datatypene.
| Datatype i Excel | Datatype i DAX | Beskrivelse |
|---|---|---|
| Heltall | En 64-biters (åtte byte) heltallverdi 1, 2 | Tall uten desimaler. Heltall kan være positive eller negative tall, men må være hele tall mellom -9 223 372 036 854 775 808 (-2^63) og 9 223 372 036 854 775 807 (2^63-1). |
| Desimaltall | Et reelt tall på 64 biter (åtte byte) 1, 2 | Reelle tall er tall som kan ha desimaler. Reelle tall dekker et bredt spekter av verdier: Negative verdier fra -1,79E +308 til -2,23E -308 Null Positive verdier fra 2,23E -308 til 1,79E + 308 Antallet signifikante sifre er imidlertid begrenset til 15 desimaler. |
| SANN/USANN | Boolsk | Enten en Sann- eller Usann-verdi. |
| Tekst | Streng | En datastreng for Unicode-tegn. Kan være strenger, tall eller datoer representert i et tekstformat. Maksimal strenglengde er 268 435 456 Unicode-tegn (256 megategn) eller 536 870 912 byte. |
| Dato | Dato/klokkeslett | Datoer og klokkeslett i en godkjent dato/klokkeslett-representasjon. Gyldige datoer er alle datoer etter 1. januar 1900. |
| Valuta | Valuta | Valuta-datatypen tillater verdier mellom -922 337 203 685 477,5808 til 922 337 203 685 477,5807 med fire desimaler med fast presisjon. |
| I/A | Tom | En tom er en datatype i DAX som representerer og erstatter SQL nulls. Du kan opprette et tomt felt ved hjelp av BLANK-funksjonen og teste for tomme celler ved hjelp av den logiske funksjonen ERTOM. |
1 DAX-formler støtter ikke datatyper som er mindre enn de som er oppført i tabellen.
2 Hvis du prøver å importere data med svært store numeriske verdier, kan importen mislykkes med følgende feilmelding:
Feil i minnedatabasen: Kolonnen< Kolonnenavn> i tabellen Tabellnavn<> inneholder verdien 1,7976931348623157e+308, som ikke støttes. Operasjonen er avbrutt.
Denne feilen oppstår fordi Power Pivot bruker denne verdien til å representere nullverdier. Verdiene i listen nedenfor er synonymer for nullverdien:
| Value |
|---|
| 9223372036854775807 |
| -9223372036854775808 |
| 1,7976931348623158e+308 |
| 2.2250738585072014e-308 |
Fjern verdien fra dataene, og prøv å importere på nytt.
Tabelldatatype
DAX bruker en tabelldatatype i mange funksjoner, for eksempel aggregeringer og tidsintelligensberegninger. Noen funksjoner krever en referanse til en tabell. Andre funksjoner returnerer en tabell som deretter kan brukes som inndata til andre funksjoner. I noen funksjoner som krever en tabell som inndata, kan du angi et uttrykk som evalueres til en tabell. Enkelte funksjoner krever en referanse til en basistabell. Hvis du vil ha informasjon om kravene til bestemte funksjoner, kan du se DAX-funksjonsreferanse.
Implisitt og eksplisitt datatypekonvertering i DAX-formler
Hver DAX-funksjon har bestemte krav til datatypene som brukes som inndata og utdata. Noen funksjoner krever for eksempel heltall for noen argumenter og datoer for andre. Andre funksjoner krever tekst eller tabeller.
Hvis dataene i kolonnen du angir som argument, ikke er kompatible med datatypen som kreves av funksjonen, vil DAX i mange tilfeller returnere en feil. Der det er mulig, vil DAX imidlertid forsøke å implisitt konvertere dataene til den nødvendige datatypen. Eksempel:
- Du kan skrive inn en dato som en streng, og DAX analyserer strengen og prøver å gjøre den til ett av dato- og klokkeslettformatene i Windows.
- Du kan legge til SANN + 1 og få resultatet 2, fordi SANN implisitt konverteres til tallet 1 og operasjonen 1+1 utføres.
- Hvis du legger sammen verdier i to kolonner, og den ene verdien representeres som tekst («12») og den andre som et tall (12), konverterer DAX implisitt strengen til et tall og foretar deretter addisjonen for et numerisk resultat. Følgende uttrykk returnerer 44: = "22" + 22
- Hvis du prøver å kjede sammen to tall, presenterer Excel dem som strenger og kjeder dem sammen. Følgende uttrykk returnerer "1234": = 12 & 34
Tabellen nedenfor oppsummerer de implisitte datatypekonverteringene som utføres i formler. Excel utfører implisitte konverteringer når det er mulig, som kreves av den angitte operasjonen.
Tabell over implisitte datakonverteringer
Typen konvertering som utføres, bestemmes av operatøren, som konverterer verdiene den krever før den forespurte operasjonen utføres. Disse tabellene viser operatorene og indikerer konverteringen som er utført på hver datatype i kolonnen når den er paret med datatypen i den kryssende raden.
Obs!
Tekstdatatyper er ikke inkludert i disse tabellene. Når et tall representeres som i et tekstformat, vil Power Pivot i noen tilfeller forsøke å fastslå talltypen og representere den som et tall.
Addisjon (+)
| Operator (+) | INTEGER | CURRENCY | REAL | Dato/klokkeslett |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | Dato/klokkeslett |
| CURRENCY | CURRENCY | CURRENCY | REAL | Dato/klokkeslett |
| REAL | REAL | REAL | REAL | Dato/klokkeslett |
| Dato/klokkeslett | Dato/klokkeslett | Dato/klokkeslett | Dato/klokkeslett | Dato/klokkeslett |
Hvis for eksempel et reelt tall brukes i en addisjonsoperasjon i kombinasjon med valutadata, konverteres begge verdiene til REELT, og resultatet returneres som REELT.
Subtraksjon (-)
I tabellen nedenfor er radoverskriften minuend (venstre side) og kolonneoverskriften er subtrahend (høyre side).
| Operator (-) | INTEGER | CURRENCY | REAL | Dato/klokkeslett |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Dato/klokkeslett | Dato/klokkeslett | Dato/klokkeslett | Dato/klokkeslett | Dato/klokkeslett |
Hvis for eksempel en dato brukes i en subtraksjonsoperasjon med en annen datatype, konverteres begge verdiene til datoer, og returverdien er også en dato.
Obs!
Datamodeller støtter også den uniære operatoren - (negativ), men denne operatoren endrer ikke datatypen for operanden.
Multiplikasjon (*)
| Operator (*) | INTEGER | CURRENCY | REAL | Dato/klokkeslett |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | INTEGER |
| CURRENCY | CURRENCY | REAL | CURRENCY | CURRENCY |
| REAL | REAL | CURRENCY | REAL | REAL |
Hvis for eksempel et heltall kombineres med et reelt tall i en multiplikasjonsoperasjon, konverteres begge tall til reelle tall, og returverdien blir også REELL.
Divisjon (/)
I tabellen nedenfor er radoverskriften telleren og kolonneoverskriften nevneren.
| Operator (/) (rad/kolonne) |
INTEGER | CURRENCY | REAL | Dato/klokkeslett |
|---|---|---|---|---|
| INTEGER | REAL | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | REAL | CURRENCY | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Dato/klokkeslett | REAL | REAL | REAL | REAL |
Hvis for eksempel et heltall kombineres med en valutaverdi i en divisjonsoperasjon, konverteres begge verdiene til reelle tall, og resultatet blir også et reelt tall.
Sammenligningsoperatorer
I sammenligningsuttrykk regnes boolske verdier som større enn strengverdier, og strengverdier regnes som større enn numeriske verdier eller dato/klokkeslettverdier. Tall og dato/klokkeslett-verdier anses for å ha samme rangering. Ingen implisitte konverteringer utføres for boolske verdier eller strengverdier. Tom eller en tom verdi konverteres til 0/""/usann, avhengig av datatypen til den andre sammenlignede verdien.
Følgende DAX-uttrykk illustrerer denne virkemåten:
=HVIS(USANN()>"sann","Uttrykket er sant", "Uttrykket er usant"), returnerer "Uttrykket er sant"
=HVIS("12">12;"Uttrykket er sant", "Uttrykket er usant"), returnerer "Uttrykket er sant".
=HVIS("12"=12;"Uttrykket er sant", "Uttrykket er usant"), returnerer "Uttrykket er usant"
Konverteringer utføres implisitt for numeriske typer eller dato/klokkesletttyper som beskrevet i tabellen nedenfor:
| Sammenligningsoperator | INTEGER | CURRENCY | REAL | Dato/klokkeslett |
|---|---|---|---|---|
| INTEGER | INTEGER | CURRENCY | REAL | REAL |
| CURRENCY | CURRENCY | CURRENCY | REAL | REAL |
| REAL | REAL | REAL | REAL | REAL |
| Dato/klokkeslett | REAL | REAL | REAL | Dato/klokkeslett |
Håndtering av tomme verdier, tomme strenger og nullverdier
I DAX representeres en nullverdi, en tom verdi, en tom celle eller en manglende verdi av den samme nye verditypen, en BLANK. Du kan også generere tomme verdier ved hjelp av BLANK-funksjonen eller teste for tomme verdier ved hjelp av ERTOM-funksjonen.
Hvordan tomme celler håndteres i operasjoner, som addisjon eller sammenkjeding, avhenger av den enkelte funksjonen. Tabellen nedenfor oppsummerer forskjellene mellom DAX- og Microsoft Excel-formler ved hvordan tomme felt håndteres.
| Expression | DAX | Excel |
|---|---|---|
| TOM + TOM | TOM | 0 (null) |
| TOM +5 | 5 | 5 |
| BLANK * 5 | TOM | 0 (null) |
| 5/BLANK | Uendelig | Feil |
| 0/TOM | NaN | Feil |
| TOM/TOM | TOM | Feil |
| USANN ELLER TOM | USANN | USANN |
| USANN OG TOM | USANN | USANN |
| SANN ELLER TOM | TRUE | TRUE |
| SANN OG TOM | USANN | SANN |
| TOM ELLER TOM | TOM | Feil |
| TOM OG TOM | TOM | Feil |
Hvis du vil ha mer informasjon om hvordan en bestemt funksjon eller operator håndterer tomme verdier, kan du se de enkelte emnene for hver DAX-funksjon i avsnittet DAX-funksjonsreferanse.