Datové typy podporované v tabulkových modelech

platí pro: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Tento článek popisuje datové typy, které lze použít v tabulkových modelech, a popisuje implicitní převod datových typů při výpočtu nebo použití dat ve vzorci DAX (Data Analysis Expressions).

Datové typy používané v tabulkových modelech

Při importu dat nebo použití hodnoty ve vzorci, i když původní zdroj dat obsahuje jiný datový typ, data se převedou na jeden z následujících datových typů. Hodnoty, které jsou výsledkem vzorců, také používají tyto datové typy.

Obecně platí, že tyto datové typy jsou implementované tak, aby umožňovaly přesné výpočty v počítaných sloupcích a pro konzistenci platí stejná omezení pro zbytek dat v modelech.

Formáty používané pro čísla, měnu, kalendářní data a časy by měly odpovídat formátu národního prostředí zadaného v klientovi používaném k práci s daty modelu. Pomocí možností formátování v modelu můžete řídit způsob zobrazení hodnoty.

Datový typ v modelu Datový typ v jazyce DAX Popis
Celé číslo Celočíselná hodnota 64 bitů (8 bajtů) *

Poznámka:
Vzorce DAX nepodporují datové typy, které jsou příliš malé na to, aby držely minimální hodnotu uvedenou v popisu.
Čísla, která nemají desetinná místa. Celá čísla můžou být kladná nebo záporná, ale musí být celá čísla mezi -9 223 372 036 854 775 807 (-2^63+1) a 9 223 372 036 854 775 806 (2^63-2).
Desetinné číslo Reálné číslo 64 bitů (osm bajtů) *

Poznámka:
Vzorce DAX nepodporují datové typy, které jsou příliš malé na to, aby držely minimální hodnotu uvedenou v popisu.
Reálná čísla jsou čísla, která můžou mít desetinná místa. Reálná čísla pokrývají širokou škálu hodnot:

Záporné hodnoty od -1,79E +308 do -2,23E -308

Nula

Kladné hodnoty od 2,23E -308 do 1,79E + 308

Počet významných číslic je však omezen na 15 desetinných míst.
logický logický Hodnota True nebo False.
Text Řetězec Datový řetězec znaků Unicode. Můžou to být řetězce, čísla nebo kalendářní data reprezentovaná v textovém formátu. Efektivní maximální velikost řetězce podléhá limitu 32767 bajtů.
Binární Řetězec Nestrukturovaná binární data, například obrázky. Sloupce s tímto datovým typem mají v jazyce DAX omezené funkce. Efektivní maximální velikost binární datové hodnoty podléhá 67108864 limitu bajtů.
Datum Datum a čas Kalendářní data a časy v přijaté formě zobrazení.

Platná data jsou všechna kalendářní data po 1. březnu 1900.
Měna Měna Datový typ měny umožňuje hodnoty od -922 337 203 685 477,5807 do 922 337 203 685 477,5806 se čtyřmi desetinnými číslicemi pevné přesnosti.
Varianta Varianta Používá se pro výrazy, jako jsou míry DAX, které mohou vracet různé datové typy. Například míra DAX, která vrátí buď celé číslo, nebo řetězec bude typu variant.
není k dispozici Prázdný Prázdné je datový typ v jazyce DAX, který představuje a nahrazuje hodnoty null SQL. Prázdnou hodnotu můžete vytvořit pomocí funkce BLANK a otestovat prázdné hodnoty pomocí logické funkce ISBLANK.

* Pokud se pokusíte importovat data s velkými číselnými hodnotami, může import selhat s následující chybou:

Chyba databáze v paměti. Sloupec '<název sloupce>' tabulky '<název tabulky>' obsahuje hodnotu '1.7976931348623157e+308', která není podporována. Operace byla zrušena.

K této chybě dochází, protože návrhář modelu používá tuto hodnotu k reprezentaci hodnot null. Hodnoty v následujícím seznamu jsou synonymy pro předchozí uvedenou hodnotu null:

Hodnota
9223372036854775807
-9223372036854775808
1.7976931348623158e+308
-1,7976931348623158e+308

Odeberte hodnotu z dat a zkuste import znovu.

Poznámka:

Nelze importovat ze sloupce varchar(max), který obsahuje délku řetězce delší než 131 072 znaků.

Datový typ Tabulky

Navíc jazyk DAX používá datový typ tabulka. Tento datový typ používá jazyk DAX v mnoha funkcích, jako jsou agregace a výpočty časové inteligence. Některé funkce vyžadují odkaz na tabulku; jiné funkce vrátí tabulku, která se pak dá použít jako vstup do jiných funkcí. V některých funkcích, které jako vstup vyžadují tabulku, můžete zadat výraz, který se vyhodnotí jako tabulka; u některých funkcí je vyžadován odkaz na základní tabulku. Informace o požadavcích konkrétních funkcí najdete v tématu Referenční informace k funkcím jazyka DAX.

Implicitní a explicitní převod datového typu ve vzorcích DAX

Každá funkce DAX má specifické požadavky na typy dat, které se používají jako vstupy a výstupy. Některé funkce například vyžadují celá čísla pro některé argumenty a kalendářní data pro jiné; jiné funkce vyžadují text nebo tabulky.

Pokud jsou data ve sloupci, který zadáte jako argument, nekompatibilní s datovým typem požadovaným funkcí, vrátí jazyk DAX v mnoha případech chybu. Kdykoli je to ale možné, daX se pokusí implicitně převést data na požadovaný datový typ. Například:

  • Jako řetězec můžete zadat číslo, například 123. DAX analyzuje řetězec a pokouší se ho určit jako číselný datový typ.

  • Můžete přidat hodnotu PRAVDA + 1 a získat výsledek 2, protože pravda je implicitně převedena na číslo 1 a operace 1+1 se provede.

  • Pokud sčítáte hodnoty ve dvou sloupcích a jedna hodnota bude reprezentována jako text ("12") a druhá jako číslo (12), DAX implicitně převede řetězec na číslo a pak provede sčítání pro číselný výsledek. Následující výraz vrátí hodnotu 44: = "22" + 22

  • Pokud se pokusíte zřetězit dvě čísla, zobrazí se jako řetězce a jsou zřetězená. Následující výraz vrátí "1234": = 12 & 34

Následující tabulka shrnuje implicitní převody datových typů, které se provádějí ve vzorcích. Obecně platí, že se návrhář sémantických modelů chová jako Microsoft Excel a provádí implicitní převody, kdykoli je to možné v případě potřeby zadanou operací.

Tabulka implicitních převodů dat

Typ převodu, který se provádí, je určen operátorem, který před provedením požadované operace přetypuje hodnoty, které vyžaduje. Tyto tabulky uvádějí operátory a označují převod, který se provádí u každého datového typu ve sloupci, když je spárován s datovým typem v protínajícím řádku.

Poznámka:

Textové datové typy nejsou v těchto tabulkách zahrnuty. Pokud je číslo reprezentováno jako v textovém formátu, v některých případech se návrhář modelu pokusí určit typ čísla a představuje ho jako číslo.

Přidání (+)

CELÉ ČÍSLO MĚNA SKUTEČNÝ Datum a čas
CELÉ ČÍSLO CELÉ ČÍSLO MĚNA SKUTEČNÝ Datum a čas
MĚNA MĚNA MĚNA SKUTEČNÝ Datum a čas
REÁLNÝ SKUTEČNÝ SKUTEČNÝ SKUTEČNÝ Datum a čas
Datum/čas Datum a čas Datum a čas Datum a čas Datum a čas

Pokud se například reálné číslo použije v kombinaci s daty měny, obě hodnoty se převedou na REAL a výsledek se vrátí jako REAL.

Odčítání (-)

V následující tabulce je záhlaví řádku minuend (levá strana) a záhlaví sloupce je subtrahend (pravá strana):

CELÉ ČÍSLO MĚNA SKUTEČNÝ Datum a čas
CELÉ ČÍSLO CELÉ ČÍSLO MĚNA SKUTEČNÝ SKUTEČNÝ
MĚNA MĚNA MĚNA SKUTEČNÝ SKUTEČNÝ
REÁLNÝ SKUTEČNÝ SKUTEČNÝ SKUTEČNÝ SKUTEČNÝ
Datum/čas Datum a čas Datum a čas Datum a čas Datum a čas

Pokud se například datum použije v operaci odčítání s jiným datovým typem, obě hodnoty se převedou na kalendářní data a návratová hodnota je také datum.

Poznámka:

Tabulkové modely také podporují unární operátor – (záporné), ale tento operátor nemění datový typ operandu.

Násobení (*)

CELÉ ČÍSLO MĚNA SKUTEČNÝ Datum a čas
CELÉ ČÍSLO CELÉ ČÍSLO MĚNA SKUTEČNÝ CELÉ ČÍSLO
MĚNA MĚNA SKUTEČNÝ MĚNA MĚNA
REÁLNÝ SKUTEČNÝ MĚNA SKUTEČNÝ SKUTEČNÝ

Pokud se například celé číslo zkombinuje s reálným číslem v operaci násobení, obě čísla se převedou na reálná čísla a vrácená hodnota je také REAL.

Dělení (/)

V následující tabulce je záhlaví řádku čitatelem a záhlaví sloupce jmenovatelem: (Řádek/Sloupec).

CELÉ ČÍSLO MĚNA SKUTEČNÝ Datum a čas
CELÉ ČÍSLO SKUTEČNÝ MĚNA SKUTEČNÝ SKUTEČNÝ
MĚNA MĚNA SKUTEČNÝ MĚNA SKUTEČNÝ
REÁLNÝ SKUTEČNÝ SKUTEČNÝ SKUTEČNÝ SKUTEČNÝ
Datum/čas SKUTEČNÝ SKUTEČNÝ SKUTEČNÝ SKUTEČNÝ

Pokud se například celé číslo zkombinuje s hodnotou měny v operaci dělení, obě hodnoty se převedou na reálná čísla a výsledek je také reálné číslo.

Porovnávací operátory

Podporuje se pouze omezená sada kombinací datových typů pro operace porovnání. Další informace najdete v tématu Referenční příručka operátorů DAX.

Zpracování prázdných hodnot, prázdných řetězců a nulových hodnot

Následující tabulka shrnuje rozdíly mezi jazykem DAX a Microsoft Excelem způsobem, jakým se zpracovávají prázdné hodnoty:

Výraz DAX Excel
BLANK + BLANK BIANKO 0 (nula)
BLANK +5 5 5
BLANK * 5 BIANKO 0 (nula)
5/BLANK Nekonečno Chyba
0/BLANK Není číslo Chyba
BLANK/BLANK BIANKO Chyba
NEPRAVDIVÉ NEBO PRÁZDNÉ NEPRAVDA NEPRAVDA
NEPRAVDIVÉ A PRÁZDNÉ NEPRAVDA NEPRAVDA
PRAVDA NEBO PRÁZDNO PRAVDIVÝ PRAVDIVÝ
PRAVDA A MEZERA NEPRAVDA PRAVDIVÝ
PRÁZDNÉ NEBO NĚCO JINÉHO BIANKO Chyba
PRÁZDNÉ A NEVYPLNĚNÉ BIANKO Chyba

Podrobnosti o tom, jak konkrétní funkce nebo operátor zpracovává prázdné hodnoty, najdete v jednotlivých tématech jednotlivých funkcí JAZYKA DAX v části Referenční informace k funkcím JAZYKA DAX.