I en datamodell har varje kolumn en relaterad datatyp som anger vilken typ av data som kan lagras i kolumnen: heltal, decimaltal, text, monetära data, datum och tider o.s.v. Datatypen avgör också vilka typer av åtgärder som du kan utföra med kolumnen, och hur mycket minne som behövs för att lagra värdena i kolumnen.
Om du använder Power Pivot-tilläggsprogrammet kan du ändra en kolumns datatyp. Du kan behöva göra det om en datumkolumn importerades som en sträng, men ska vara något annat. Mer information finns i Ange datatypen för en kolumn i Power Pivot.
Artikelinnehåll
Sammanfattning av datatyper
Följande tabell innehåller de datatyper som stöds i en datamodell. När du importerar data eller använder ett värde i en formel konverteras data till någon av följande datatyper, även om den ursprungliga datakällan innehåller en annan datatyp. Värdena som formler resulterar i använder också dessa datatyper.
Datatyp i Excel |
Datatyp i DAX |
Beskrivning |
---|---|---|
Heltal |
Ett 64-bitars (åtta-bytes) heltalsvärde 1, 2 |
Tal som inte har några decimaler. Heltal kan vara positiva eller negativa tal, men måste vara hela tal mellan -9 223 372 036 854 775 808 (-2^63) och 9 223 372 036 854 775 807 (2^63-1). |
Decimaltal |
Ett 64-bitars (åtta-bytes) realtal 1, 2 |
Realtal är tal som kan ha decimaler. Realtal innefattar en rad värden: Negativa värden från -1,79E +308 till -2,23E -308 Noll Positiva värden från 2,23E -308 till 1,79E +308 Antalet signifikanta siffror är dock begränsat till 15 decimalsiffror. |
SANT/FALSKT |
Boolesk |
Antingen ett sant- eller falskt-värde. |
Text |
Sträng |
En Unicode-teckendatasträng. Kan vara strängar, tal eller datum som anges i ett textformat. Den högsta tillåtna stränglängden är 268 435 456 Unicode-tecken (256 mega tecken) eller 536 870 912 byte. |
Datum |
Datum/tid |
Datum och tider i ett godkänt datum-/tidformat. Giltiga datum är alla datum efter 1 januari 1900. |
Valuta |
Valuta |
I datatypen valuta tillåts värden mellan -922 337 203 685 477,5808 och 922 337 203 685 477,5807 med fyra decimalsiffror med fast precision. |
– |
Tom |
Ett blankvärde är en datatyp i DAX som representerar och ersätter nullvärden i SQL. Du skapar ett blankvärde med funktionen BLANK och söker efter blankvärden genom att använda den logiska funktionen ISBLANK. |
1 DAX-formler har inte stöd för datatyper som är mindre än de som anges i tabellen.
2 Om du försöker importera data som har mycket höga numeriska värden kan importen misslyckas på grund av följande fel:
Fel i RAM-baserad databas: Kolumnen <kolumnnamn> i tabellen <tabellnamn> innehåller värdet 1.7976931348623157e+308 som inte stöds. Åtgärden har avbrutits.
Det här felet uppstår på grund av att värdet används för representation av nullvärden i Power Pivot. Värdena i följande lista är synonymer till nullvärdet:
Värde |
|
---|---|
9223372036854775807 |
|
-9223372036854775808 |
|
1,7976931348623158e+308 |
|
2,2250738585072014e-308 |
Ta bort värdet från dina data och försök importera igen.
Tabelldatatyp
DAX använder en tabelldatatyp i många funktioner, till exempel aggregeringar och tidsinformationsberäkningar. Vissa funktioner kräver en referens till en tabell. andra funktioner returnerar en tabell som sedan kan användas som indata till andra funktioner. I vissa funktioner som kräver en tabell som indata kan du ange ett uttryck som utvärderas till en tabell. för vissa funktioner krävs en referens till en bastabell. Mer information om kraven för specifika funktioner finns i Funktionsreferens för DAX.
Implicit och explicit datatypskonvertering i DAX-formler
Varje DAX-funktion har specifika krav på vilka typer av data som används som indata och utdata. Vissa funktioner kräver till exempel heltal för vissa argument och datum för andra. andra funktioner kräver text eller tabeller.
Om data i kolumnen som du anger som argument är inkompatibla med datatypen som krävs av funktionen, returneras i många fall ett fel. Där så är möjligt görs automatiska försök att implicit konvertera data till den datatyp som krävs. Exempel:
-
Du kan skriva ett datum som en sträng. Då parsas strängen och ett försök görs att typkonvertera den som något av datum- och tidsformaten i Windows.
-
Du kan lägga till TRUE + 1 och få resultatet 2, eftersom TRUE konverteras implicit till talet 1 och åtgärden 1+1 utförs.
-
Om du lägger till värden i två kolumner, och ett värde råkar visas som text ("12") och det andra som ett tal (12), konverteras strängen implicit till ett tal och sedan görs en addition av det numeriska resultatet. Följande uttryck returnerar 44: = "22" + 22.
-
Om du försöker sammanfoga två tal, presenteras de som strängar i Excel och sammanfogas sedan. Följande uttryck returnerar "1234": = 12 & 34
I tabellen nedan sammanfattas de implicita datatypskonverteringarna som utförs i formler. Excel utför implicita konverteringar när det är möjligt och om det krävs av den angivna åtgärden.
Tabell med implicita datakonverteringar
Vilken typ av konvertering som utförs bestäms av operatorn, som typkonverterar värdena som behövs innan önskad åtgärd utförs. I tabellerna nedan anges operatorerna, och vilken konvertering som utförs för respektive datatyp i kolumnen när den paras ihop med datatypen i korsande rad.
Obs!: Textdatatyper beskrivs inte i dessa tabeller. När ett tal representeras i ett textformat försöker Power Pivot i vissa fall att fastställa taltypen och representera det som ett tal.
Addition (+)
Operator (+) |
HELTAL |
VALUTA |
REELLT |
Datum/tid |
---|---|---|---|---|
HELTAL |
HELTAL |
VALUTA |
REELLT |
Datum/tid |
VALUTA |
VALUTA |
VALUTA |
REELLT |
Datum/tid |
REELLT |
REAL |
REAL |
REELLT |
Datum/tid |
Datum/tid |
Datum/tid |
Datum/tid |
Datum/tid |
Datum/tid |
Om till exempel ett realtal används vid addition i kombination med valutadata konverteras båda värdena till REAL, och resultatet returneras som REAL.
Subtraktion (-)
I tabellen nedan är radrubriken minuenden (vänster sida) och kolumnrubriken är subtrahenden (höger sida).
Operator (-) |
HELTAL |
VALUTA |
REELLT |
Datum/tid |
---|---|---|---|---|
HELTAL |
HELTAL |
VALUTA |
REELLT |
REELLT |
VALUTA |
VALUTA |
VALUTA |
REELLT |
REAL |
REAL |
REAL |
REAL |
REAL |
REELLT |
Datum/tid |
Datum/tid |
Datum/tid |
Datum/tid |
Datum/tid |
Om till exempel ett datum används vid subtraktion med någon annan datatyp, konverteras båda värdena till datum, och returvärdet blir också ett datum.
Obs!: Datamodeller har också stöd för den unära operatorn, - (negativ), men den här operatorn ändrar inte datatypen på operanden.
Multiplikation (*)
Operator (*) |
HELTAL |
VALUTA |
REELLT |
Datum/tid |
---|---|---|---|---|
HELTAL |
HELTAL |
VALUTA |
REELLT |
HELTAL |
VALUTA |
VALUTA |
REELLT |
VALUTA |
VALUTA |
REELLT |
REELLT |
VALUTA |
REELLT |
REELLT |
Om till exempel ett heltal kombineras med ett realtal vid multiplikation konverteras båda talen till realtal, och returvärdet blir också REAL.
Division (/)
I tabellen nedan är radrubriken täljaren och kolumnrubriken är nämnaren.
Operator (/) (Rad/kolumn) |
HELTAL |
VALUTA |
REELLT |
Datum/tid |
---|---|---|---|---|
HELTAL |
REELLT |
VALUTA |
REELLT |
REELLT |
VALUTA |
VALUTA |
REELLT |
VALUTA |
REELLT |
REAL |
REAL |
REAL |
REAL |
REELLT |
Datum/tid |
REELLT |
REAL |
REAL |
REELLT |
Om till exempel ett heltal kombineras med ett valutavärde vid division konverteras båda värdena till realtal, och resultatet blir också ett realtal.
Jämförelseoperatorer
I jämförelseuttryck anses booleska värden vara större än strängvärden och strängvärden anses vara större än numeriska värden eller datum-/tidsvärden. tal och datum-/tidsvärden anses ha samma rangordning. Inga implicita konverteringar utförs för booleska värden eller strängvärden. BLANK eller ett tomt värde konverteras till 0/""/false beroende på datatypen för det andra jämförda värdet.
I DAX-uttrycken nedan illustreras det här beteendet:
=OM(FALSKT()>"sant","Uttrycket är sant", "Uttrycket är falskt") ger resultatet "Uttrycket är sant"
=OM("12">12,"Uttrycket är sant", "Uttrycket är falskt") ger resultatet "Uttrycket är sant"
=OM("12"=12,"Uttrycket är sant", "Uttrycket är falskt") ger resultatet "Uttrycket är falskt"
Konvertering utförs implicit för numeriska typer eller datum-/tidstyper enligt tabellen nedan:
Jämförelseoperator |
HELTAL |
VALUTA |
REELLT |
Datum/tid |
---|---|---|---|---|
HELTAL |
HELTAL |
VALUTA |
REELLT |
REELLT |
VALUTA |
VALUTA |
VALUTA |
REELLT |
REAL |
REAL |
REAL |
REAL |
REAL |
REELLT |
Datum/tid |
REELLT |
REAL |
REELLT |
Datum/tid |
Hantera blankvärden, tomma strängar och nollvärden
I DAX representeras ett null-värde, ett blankvärde, en tom cell eller ett värde som saknas av samma nya värdetyp, BLANK. Du kan också skapa blankvärden genom att använda funktionen BLANK, eller söka efter blankvärden med funktionen ISBLANK.
Hur blankvärden hanteras i åtgärder som addition och sammanfogning beror på den enskilda funktionen. I tabellen nedan sammanfattas skillnaderna mellan hur blankvärden hanteras i DAX-formler och i Microsoft Excel-formler.
Uttryck |
DAX |
Excel |
---|---|---|
BLANK + BLANK |
BLANK |
0 (noll) |
BLANK +5 |
5 |
5 |
BLANK * 5 |
BLANK |
0 (noll) |
5/BLANK |
Oändligt |
Fel |
0/BLANK |
NaN |
Fel |
BLANK/BLANK |
BLANK |
Fel |
FALSE ELLER BLANK |
FALSKT |
FALSKT |
FALSE OCH BLANK |
FALSKT |
FALSKT |
TRUE ELLER BLANK |
SANT |
SANT |
TRUE OCH BLANK |
FALSKT |
SANT |
BLANK ELLER BLANK |
BLANK |
Fel |
BLANK OCH BLANK |
BLANK |
Fel |
Mer information om hur en viss funktion eller operator hanterar blanksteg finns i de enskilda avsnitten för varje DAX-funktion i avsnittet Dax-funktionsreferens.