I en datamodel har hver kolonne en tilknyttet datatype, der angiver den type data, kolonnen kan indeholde: hele tal, decimaltal, tekst, pengemæssige data, datoer og klokkeslæt osv. Datatypen bestemmer også, hvilke typer handlinger du kan udføre i kolonnen, og hvor meget hukommelse det tager at gemme værdierne i kolonnen.
Hvis du bruger tilføjelsesprogrammet Power Pivot , kan du ændre en kolonnes datatype. Det kan være nødvendigt at gøre dette, hvis en datokolonne blev importeret som en streng, men du har brug for, at den er noget andet. Du kan få mere at vide under Angive datatypen for en kolonne i Power Pivot.
I denne artikel
Oversigt over datatyper
I følgende tabel vises de datatyper, der understøttes i en datamodel. Når du importerer data eller bruger en værdi i en formel, selvom den oprindelige datakilde indeholder en anden datatype, konverteres dataene til en af disse datatyper. Værdier, der er resultatet af formler, bruger også disse datatyper.
Datatype i Excel |
Datatype i DAX |
Beskrivelse |
---|---|---|
Helt tal |
Et heltal på 64 bit (otte byte) 1, 2 |
Tal uden decimaler. Heltal kan være positive eller negative tal, men skal være heltal mellem -9.223.372.036.854.775.808 (-2^63) og 9.223.372.036.854.775.807 (2^63-1). |
Decimaltal |
Et 64-bit (otte byte) reelt tal 1, 2 |
Reelle tal er tal, der kan have decimaler. Reelle tal dækker en lang række værdier: Negative værdier fra -1,79E +308 til -2,23E -308 Nul Positive værdier fra 2,23E -308 til 1,79E + 308 Antallet af betydende cifre er dog begrænset til 15 decimaler. |
SAND/FALSK |
Boolesk værdi |
Enten værdien Sand eller Falsk. |
Tekst |
Streng |
En Unicode-tegndatastreng. Kan være strenge, tal eller datoer, der er repræsenteret i et tekstformat. Den maksimale strenglængde er 268.435.456 Unicode-tegn (256 megategn) eller 536.870.912 byte. |
Dato |
Dato/klokkeslæt |
Datoer og klokkeslæt i en accepteret repræsentation af dato og klokkeslæt. Gyldige datoer er alle datoer efter den 1. januar 1900. |
Valuta |
Valuta |
Datatypen Valuta tillader værdier mellem -922.337.203.685.477,5808 og 922.337.203.685.477,5807 med fire decimalcifre med fast præcision. |
I/T |
Tomt |
En tom er en datatype i DAX, der repræsenterer og erstatter SQL null-værdier. Du kan oprette en tom ved hjælp af funktionen TOM og teste for tomme felter ved hjælp af den logiske funktion ER.TOM. |
1 DAX-formler understøtter ikke datatyper, der er mindre end dem, der er angivet i tabellen.
2 Hvis du forsøger at importere data med meget store numeriske værdier, kan importen mislykkes med følgende fejl:
Fejl i hukommelsesdatabase: Kolonnen "<kolonnenavn>" i tabellen "<tabelnavn>" indeholder en værdi, '1,7976931348623157e+308', som ikke understøttes. Handlingen er annulleret.
Denne fejl opstår, fordi Power Pivot bruger denne værdi til at repræsentere null-værdier. Værdierne på følgende liste er synonymer for null-værdien:
Værdi |
|
---|---|
9223372036854775807 |
|
-9223372036854775808 |
|
1,7976931348623158e+308 |
|
2.2250738585072014e-308 |
Fjern værdien fra dine data, og prøv at importere igen.
Tabeldatatype
DAX bruger en tabeldatatype i mange funktioner, f.eks. sammenlægninger og time intelligence-beregninger. Nogle funktioner kræver en reference til en tabel. andre funktioner returnerer en tabel, der derefter kan bruges som input til andre funktioner. I nogle funktioner, der kræver en tabel som input, kan du angive et udtryk, der evalueres til en tabel. for nogle funktioner kræves der en reference til en basistabel. Du kan finde oplysninger om kravene til bestemte funktioner i DAX Function Reference.
Implicit og eksplicit datatypekonvertering i DAX-formler
Hver DAX-funktion har specifikke krav til de typer data, der bruges som input og output. Nogle funktioner kræver f.eks. heltal for nogle argumenter og datoer for andre. andre funktioner kræver tekst eller tabeller.
Hvis dataene i den kolonne, du angiver som argument, ikke er kompatible med den datatype, der kræves af funktionen, returnerer DAX i mange tilfælde en fejl. Men hvor det er muligt, vil DAX forsøge implicit at konvertere dataene til den påkrævede datatype. Det kunne f.eks. være:
-
Du kan skrive en dato som en streng, hvorefter DAX fortolker strengen og forsøger at vise den som et af dato- og klokkeslætsformaterne i Windows.
-
Du kan tilføje SAND + 1 og få resultatet 2, fordi SAND implicit konverteres til tallet 1, og handlingen 1+1 udføres.
-
Hvis du tilføjer værdier i to kolonner, og én værdi vises som tekst ("12") og den anden som et tal (12), konverterer DAX implicit strengen til et tal og derefter gør tilføjelsen for et numerisk resultat. Følgende udtryk returnerer 44: = "22" + 22
-
Hvis du forsøger at sammenkæde to tal, viser Excel dem som strenge og sammenkæder dem derefter. Følgende udtryk returnerer "1234": = 12 & 34
Følgende tabel opsummerer de implicitte datatypekonverteringer, der udføres i formler. Excel udfører implicitte konverteringer, når det er muligt, som krævet af den angivne handling.
Tabel over implicitte datakonverteringer
Den type konvertering, der udføres, bestemmes af operatoren, som kaster de værdier, der kræves, før den ønskede handling udføres. Disse tabeller viser operatorerne og angiver den konvertering, der udføres på hver datatype i kolonnen, når den er parret med datatypen i den krydsende række.
Bemærk!: Tekstdatatyper medtages ikke i disse tabeller. Når et tal er repræsenteret som i et tekstformat, forsøger Power Pivot i nogle tilfælde at bestemme taltypen og repræsentere det som et tal.
Addition (+)
Operator (+) |
HELTAL |
CURRENCY |
REEL |
Dato/klokkeslæt |
---|---|---|---|---|
HELTAL |
HELTAL |
CURRENCY |
REEL |
Dato/klokkeslæt |
CURRENCY |
CURRENCY |
CURRENCY |
REEL |
Dato/klokkeslæt |
REEL |
REEL |
REEL |
REEL |
Dato/klokkeslæt |
Dato/klokkeslæt |
Dato/klokkeslæt |
Dato/klokkeslæt |
Dato/klokkeslæt |
Dato/klokkeslæt |
Hvis f.eks. et reelt tal bruges i en additionshandling sammen med valutadata, konverteres begge værdier til REAL, og resultatet returneres som REEL.
Subtraktion (-)
I følgende tabel er rækkeoverskriften minuend (venstre side), og kolonneoverskriften er undersiden (højre side).
Operator (-) |
HELTAL |
CURRENCY |
REEL |
Dato/klokkeslæt |
---|---|---|---|---|
HELTAL |
HELTAL |
CURRENCY |
REEL |
REEL |
CURRENCY |
CURRENCY |
CURRENCY |
REEL |
REEL |
REEL |
REEL |
REEL |
REEL |
REEL |
Dato/klokkeslæt |
Dato/klokkeslæt |
Dato/klokkeslæt |
Dato/klokkeslæt |
Dato/klokkeslæt |
Hvis f.eks. en dato bruges i en subtraktionshandling med en anden datatype, konverteres begge værdier til datoer, og returværdien er også en dato.
Bemærk!: Datamodeller understøtter også den uærlige operator - (negativ), men denne operator ændrer ikke operands datatype.
Multiplikation (*)
Operator (*) |
HELTAL |
CURRENCY |
REEL |
Dato/klokkeslæt |
---|---|---|---|---|
HELTAL |
HELTAL |
CURRENCY |
REEL |
HELTAL |
CURRENCY |
CURRENCY |
REEL |
CURRENCY |
CURRENCY |
REEL |
REEL |
CURRENCY |
REEL |
REEL |
Hvis f.eks. et heltal kombineres med et reelt tal i en multiplikationshandling, konverteres begge tal til reelle tal, og returværdien er også REEL.
Division (/)
I følgende tabel er rækkeoverskriften tælleren, og kolonneoverskriften er nævneren.
Operator (/) (Række/kolonne) |
HELTAL |
CURRENCY |
REEL |
Dato/klokkeslæt |
---|---|---|---|---|
HELTAL |
REEL |
CURRENCY |
REEL |
REEL |
CURRENCY |
CURRENCY |
REEL |
CURRENCY |
REEL |
REEL |
REEL |
REEL |
REEL |
REEL |
Dato/klokkeslæt |
REEL |
REEL |
REEL |
REEL |
Hvis f.eks. et heltal kombineres med en valutaværdi i en divisionshandling, konverteres begge værdier til reelle tal, og resultatet er også et reelt tal.
Sammenligningsoperatorer
I sammenligningsudtryk betragtes booleske værdier som større end strengværdier, og strengværdier betragtes som større end numeriske værdier eller dato-/klokkeslætsværdier. tal og dato-/klokkeslætsværdier anses for at have samme rang. Der udføres ingen implicitte konverteringer for booleske værdier eller strengværdier. TOM eller en tom værdi konverteres til 0/""/false, afhængigt af datatypen for den anden sammenlignede værdi.
Følgende DAX-udtryk illustrerer denne funktionsmåde:
=HVIS(FALSK()>"sand","Udtrykket er sandt", "Udtrykket er falsk"), returnerer "Udtryk er sandt"
=HVIS("12">12,"Udtrykket er sandt", "Udtrykket er falsk"), returnerer "Udtrykket er sandt".
=HVIS("12"=12,"Udtrykket er sandt", "Udtrykket er falsk"), returnerer "Udtrykket er falsk"
Konverteringer udføres implicit for numeriske typer eller dato/klokkeslætstyper som beskrevet i følgende tabel:
Sammenligningsoperator |
HELTAL |
CURRENCY |
REEL |
Dato/klokkeslæt |
---|---|---|---|---|
HELTAL |
HELTAL |
CURRENCY |
REEL |
REEL |
CURRENCY |
CURRENCY |
CURRENCY |
REEL |
REEL |
REEL |
REEL |
REEL |
REEL |
REEL |
Dato/klokkeslæt |
REEL |
REEL |
REEL |
Dato/klokkeslæt |
Håndtering af tomme, tomme strenge og nulværdier
I DAX repræsenteres en null-, tom værdi, tom celle eller en manglende værdi alle af den samme nye værditype, en TOM. Du kan også generere tomme felter ved hjælp af funktionen TOM eller teste for tomme felter ved hjælp af funktionen ER.TOM.
Hvordan tomme felter håndteres i handlinger, f.eks. addition eller sammenkædning, afhænger af den enkelte funktion. Følgende tabel opsummerer forskellene mellem DAX- og Microsoft Excel-formler på den måde, som tomme celler håndteres på.
Udtryk |
DAX |
Excel |
---|---|---|
TOM + TOM |
HVID |
0 (nul) |
TOM +5 |
5 |
5 |
TOM * 5 |
HVID |
0 (nul) |
5/TOM |
Uendelig |
Fejl |
0/TOM |
Nan |
Fejl |
TOM/TOM |
HVID |
Fejl |
FALSK ELLER TOM |
FALSK |
FALSK |
FALSK OG TOM |
FALSK |
FALSK |
SAND ELLER TOM |
TRUE |
TRUE |
SAND OG TOM |
FALSK |
SAND |
TOM ELLER TOM |
HVID |
Fejl |
TOM OG TOM |
HVID |
Fejl |
Hvis du vil have mere at vide om, hvordan en bestemt funktion eller operator håndterer tomme felter, skal du se de enkelte emner for hver DAX-funktion i afsnittet DAX-funktionsreference.