V datovém modelu má každý sloupec přidružený datový typ, který určuje typ dat, která sloupec může obsahovat: celá čísla, desetinná čísla, text, peněžní data, data a časy atd. Datový typ také určuje, jaké druhy operací můžete se sloupcem provádět a kolik paměti je potřeba k uložení hodnot ve sloupci.
Pokud používáte doplněk Power Pivot, můžete změnit datový typ sloupce. To může být potřeba udělat, pokud byl sloupec kalendářního data importován jako řetězec, ale potřebujete, aby to bylo něco jiného. Další informace najdete v tématu Nastavení datového typu sloupce v Power Pivot.
V tomto článku
Souhrn datových typů
Následující tabulka uvádí datové typy podporované v datovém modelu. Když importujete data nebo použijete hodnotu ve vzorci, i když původní zdroj dat obsahuje jiný datový typ, data se převedou na jeden z těchto datových typů. Hodnoty, které jsou výsledkem vzorců, také používají tyto datové typy.
Datový typ v Excelu |
Datový typ v jazyce DAX |
Popis |
---|---|---|
Celé číslo |
64bitová (osmi bajtová) celočíselná hodnota 1, 2 |
Čísla bez desetinných míst Celá čísla můžou být kladná nebo záporná, ale musí to být celá čísla v rozsahu -9 223 372 036 854 775 808 (-2^63) a 9 223 372 036 854 775 807 (2^63-1). |
Desetinné číslo |
64 bitů (osm bajtů) reálné číslo 1, 2 |
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 platných číslic je však omezen na 15 desetinných číslic. |
PRAVDA/NEPRAVDA |
Logická hodnota |
Hodnota True nebo False. |
Text |
Funkce String |
Datový řetězec znaků Unicode. Můžou to být řetězce, čísla nebo kalendářní data reprezentovaná v textovém formátu. Maximální délka řetězce je 268 435 456 znaků Unicode (256 mega znaků) nebo 536 870 912 bajtů. |
Datum |
Datum a čas |
Kalendářní data a časy v přijaté reprezentaci data a času. Platná data jsou všechna data po 1. lednu 1900. |
Měna |
Měna |
Datový typ Měna umožňuje hodnoty od -922 337 203 685 477,5808 do 922 337 203 685 477,5807 se čtyřmi desetinnými číslicemi s pevnou přesností. |
Není k dispozici |
Prázdné: |
Prázdná hodnota 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 testovat prázdné hodnoty pomocí logické funkce ISBLANK. |
1 Vzorce DAX nepodporují datové typy menší než ty, které jsou uvedené v tabulce.
2 Pokud se pokusíte importovat data s velmi velkými číselnými hodnotami, import může 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á se nepodporuje. Operace byla zrušena.
K této chybě dochází, protože Power Pivot používá tuto hodnotu k reprezentaci hodnot null. Hodnoty v následujícím seznamu jsou synonyma pro hodnotu null:
Value (Hodnota) |
|
---|---|
9223372036854775807 |
|
-9223372036854775808 |
|
1,7976931348623158e+308 |
|
2.2250738585072014e-308 |
Odeberte hodnotu z dat a zkuste import zopakovat.
Datový typ tabulky
Jazyk DAX používá datový typ tabulky v mnoha funkcích, jako jsou agregace a výpočty časového měřítka. 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 vyhodnocuje jako tabulka; U některých funkcí se vyžaduje odkaz na základní tabulku. Informace o požadavcích na konkrétní funkce najdete v tématu Referenční informace o funkcích jazyka DAX.
Implicitní a explicitní převod datových typů ve vzorcích DAX
Každá funkce jazyka 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 data ve sloupci, který zadáte jako argument, nejsou kompatibilní s datovým typem požadovaným funkcí, vrátí jazyk DAX v mnoha případech chybu. Kdykoli je to ale možné, jazyk DAX se pokusí implicitně převést data na požadovaný datový typ. Příklady:
-
Datum můžete zadat jako řetězec a jazyk DAX tento řetězec analyzuje a pokusí se ho přetypovat jako jeden z formátů data a času ve Windows.
-
Můžete přidat hodnotu PRAVDA + 1 a získat výsledek 2, protože pravda se implicitně převede na číslo 1 a provede se operace 1+1.
-
Pokud přidá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ězení dvou čísel, Excel je zobrazí jako řetězce a pak 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. Aplikace Excel provádí implicitní převody, kdykoli je to možné, podle požadavků zadané operace.
Tabulka implicitních převodů dat
Typ provedeného převodu určuje operátor, který před provedením požadované operace přetypuje požadované hodnoty. 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 se řá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 Power Pivot pokusí určit typ čísla a reprezentovat ho jako číslo.
Sčítání (+)
Operátor (+) |
INTEGER |
CURRENCY |
REAL |
Datum a čas |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
Datum a čas |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
Datum a čas |
REAL |
REAL |
REAL |
REAL |
Datum a čas |
Datum a čas |
Datum a čas |
Datum a čas |
Datum a čas |
Datum a čas |
Pokud se například v operaci sčítání v kombinaci s daty měny použije reálné číslo, obě hodnoty se převedou na REÁLNÉ a výsledek se vrátí jako REAL.
Odčítání (-)
V následující tabulce je záhlavím řádku minuend (levá strana) a záhlavím sloupce je subtrahend (pravá strana).
Operátor (-) |
INTEGER |
CURRENCY |
REAL |
Datum a čas |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
Datum a č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 vrácená hodnota je také datum.
Poznámka: Datové modely také podporují unární operátor – (negativní), ale tento operátor nemění datový typ operandu.
Násobení (*)
Operátor (*) |
INTEGER |
CURRENCY |
REAL |
Datum a čas |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
INTEGER |
CURRENCY |
CURRENCY |
REAL |
CURRENCY |
CURRENCY |
REAL |
REAL |
CURRENCY |
REAL |
REAL |
Pokud je například celé číslo v operaci násobení kombinováno s reálným číslem, obě čísla se převedou na reálná čísla a návratová hodnota je také REAL.
Divize (/)
V následující tabulce je záhlaví řádku čitatelem a záhlaví sloupce je jmenovatelem.
Operátor (/) (Řádek/sloupec) |
INTEGER |
CURRENCY |
REAL |
Datum a čas |
---|---|---|---|---|
INTEGER |
REAL |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
REAL |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
Datum a čas |
REAL |
REAL |
REAL |
REAL |
Pokud je například celé číslo v operaci dělení kombinováno s hodnotou měny, obě hodnoty se převedou na reálná čísla a výsledkem je také reálné číslo.
Relační operátory
Ve výrazech porovnání se logické hodnoty považují za větší než řetězcové hodnoty a řetězcové hodnoty jsou považovány za větší než číselné hodnoty nebo hodnoty data a času; čísla a hodnoty data a času se považují za stejné pořadí. Nejsou provedeny žádné implicitní převody pro logické hodnoty nebo řetězcové hodnoty; BLANK nebo prázdná hodnota se v závislosti na datovém typu druhé porovnávané hodnoty převede na hodnotu 0/"""/false.
Toto chování ilustrují následující výrazy DAX:
=KDYŽ(FALSE()>"true";"Výraz je true"; "Výraz je nepravda"), vrátí "Výraz je true"
=KDYŽ("12">12;"Výraz je true"; "Výraz je nepravda"), vrátí "Výraz je pravdivý".
=KDYŽ("12"=12;"Výraz je true"; "Výraz je nepravda"), vrátí "Výraz je nepravda".
Převody se provádějí implicitně pro číselné typy nebo typy data a času, jak je popsáno v následující tabulce:
Relační operátor |
INTEGER |
CURRENCY |
REAL |
Datum a čas |
---|---|---|---|---|
INTEGER |
INTEGER |
CURRENCY |
REAL |
REAL |
CURRENCY |
CURRENCY |
CURRENCY |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
REAL |
Datum a čas |
REAL |
REAL |
REAL |
Datum a čas |
Zpracování prázdných hodnot, prázdných řetězců a nulových hodnot
V jazyce DAX jsou hodnoty null, prázdná hodnota, prázdná buňka nebo chybějící hodnota reprezentovány stejným novým typem hodnoty BLANK. Prázdné hodnoty můžete také generovat pomocí funkce BLANK nebo testovat prázdné hodnoty pomocí funkce ISBLANK.
Způsob zpracování prázdných položek v operacích, jako je sčítání nebo zřetězení, závisí na jednotlivých funkcích. Následující tabulka shrnuje rozdíly mezi vzorci jazyka DAX a Microsoft Excel ve způsobu, jakým se zpracovávají prázdné hodnoty.
Expression |
DAX |
Excel |
---|---|---|
BLANK + BLANK |
BIANKO |
0 (nula) |
BLANK +5 |
5 |
5 |
PRÁZDNÉ * 5 |
BIANKO |
0 (nula) |
5/BLANK |
Nekonečno |
Chyba |
0/BLANK |
Nan |
Chyba |
PRÁZDNÉ/PRÁZDNÉ |
BIANKO |
Chyba |
NEPRAVDA NEBO PRÁZDNÉ |
FALSE |
FALSE |
FALSE A BLANK |
FALSE |
FALSE |
PRAVDA NEBO PRÁZDNÉ |
TRUE |
TRUE |
TRUE A BLANK |
NEPRAVDA |
PRAVDA |
PRÁZDNÉ NEBO PRÁZDNÉ |
BIANKO |
Chyba |
PRÁZDNÉ A PRÁZDNÉ |
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 o funkcích jazyka DAX.