V datovém modelu má každý sloupec přidružený datový typ, který určuje typ dat, která může sloupec obsahovat: celá čísla, desetinná čísla, text, peněžní data, kalendářní data a časy atd. Datový typ také určuje, jaké typy operací můžete ve sloupci dělat 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. Možná to budete muset udělat, pokud se sloupec data naimportoval 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, převedou se na jeden z těchto datových typů. Tyto datové typy používají taky hodnoty, které jsou výsledkem vzorců.
Datový typ v Excel |
Datový typ v jazyku DAX |
Popis |
---|---|---|
Celé číslo |
64bitová (osm bajtů) celočíselná hodnota 1, 2 |
Čísla, která nemají desetinná místa. Celá čísla mohou být kladná nebo záporná, ale musí být celá čísla mezi -9 223 372 036 854 775 808 (-2^63) a 9 223 372 036 854 775 807 (2^63-1). |
Desetinné číslo |
64bitové (osm bajtů) reálné číslo 1, 2 |
Reálná čísla jsou čísla, která mohou 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 ale omezen na 15 desetinných míst. |
PRAVDA/NEPRAVDA |
Logická hodnota |
Hodnota True (Pravda) nebo False (Nepravda). |
Text |
Funkce String |
Datový řetězec znaků Unicode. Mohou to být řetězce, čísla nebo kalendářní data znázorněná 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 |
Data a časy v přijatém zobrazení data a času. Platná kalendářní data jsou všechna kalendářní 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é je datový typ jazyka DAX, který představuje a nahrazuje SQL null. Prázdné pole můžete vytvořit pomocí funkce BLANK a testovat prázdná pole pomocí logické funkce ISBLANK. |
1 Vzorce jazyka 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, může selhat import 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í podporovaná. Operace byla zrušena.
K této chybě dochází, 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 znovu.
Datový typ tabulky
Jazyk DAX používá datový typ tabulky v mnoha funkcích, jako jsou agregace a výpočty časové řady. Některé funkce vyžadují odkaz na tabulku. Jiné funkce vracejí tabulku, která se pak může použít jako vstup do jiných funkcí. V některých funkcích, které vyžadují zadání tabulky, můžete zadat výraz, který se vyhodnotí jako tabulka. U některých funkcí je potřeba 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ého typu ve vzorcích jazyka 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 ostatní. 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í, jazyk DAX v mnoha případech vrátí chybu. Pokud je to možné, pokusí se ale jazyk DAX implicitně převést data na požadovaný datový typ. Příklady:
-
Můžete zadat datum jako řetězec a jazyk DAX bude analyzovat řetězec a pokusí se ho přetypovat jako Windows formáty data a času.
-
Můžete přidat hodnotu PRAVDA+1 a získat výsledek 2, protože hodnota PRAVDA se implicitně převede na číslo 1 a provede se operace 1+1.
-
Pokud přidáte hodnoty do dvou sloupců a jedna hodnota se stane, že je reprezentována jako text ("12") a druhá jako číslo (12), jazyk DAX implicitně převede řetězec na číslo a potom přidá číselný výsledek. Následující výraz vrátí hodnotu 44: = "22" + 22.
-
Pokud se pokusíte zřetězit dvě čísla, Excel je prezentovat jako řetězce a potom zřetězit. 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. Excel provádí implicitní převody, kdykoli je to možné, jak vyžaduje zadaná operace.
Tabulka implicitních převodů dat
Typ převodu, který se provádí, určuje operátor, který před provedením požadované operace přetypuje požadované hodnoty. V těchto tabulkách jsou uvedené operátory a označují převod, který se provádí u každého datového typu ve sloupci, když je spárovaný 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 znázorněno jako v textovém formátu, v některých 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 při operaci sčítání používá reálné číslo v kombinaci s daty měny, převedou se obě hodnoty na HODNOTU REAL a výsledek se vrátí jako REAL.
Odčítání (-)
V následující tabulce je záhlaví řádku minuend (vlevo) a záhlaví 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žívá při operaci odčítání s jiným datovým typem, převedou se obě hodnoty na kalendářní data a vrácená hodnota je také datem.
Poznámka: Datové modely také podporují unární operátor - (záporný), ale tento operátor nezmě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 kombinováno se skutečným číslem v operaci násobení, převedou se obě čísla 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ím sloupce je jmenovatel.
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 kombinováno s hodnotou měny v operaci dělení, převedou se obě hodnoty na reálná čísla a výsledek je také reálné číslo.
Relační operátory
Ve relačních výrazech se logické hodnoty považují za větší než řetězcové hodnoty a řetězcové hodnoty se považují za větší než číselné hodnoty nebo hodnoty data a času. čísla a hodnoty data a času se považují za hodnoty se stejným pořadím. Pro logické nebo řetězcové hodnoty se ne provádějí žádné implicitní převody. Hodnota BLANK nebo prázdná hodnota se převede na hodnotu 0/""/false v závislosti na datovém typu druhé porovnávané hodnoty.
Toto chování znázorňují následující výrazy jazyka DAX:
=KDYŽ(NEPRAVDA()>"pravda";"Výraz je pravda", "Výraz je nepravdivý"), vrátí "Výraz je pravdivý".
=KDYŽ("12">12;"Výraz je pravda", "Výraz je nepravdivý"), vrátí "Výraz je pravdivý".
=KDYŽ("12"=12;"Výraz je pravda"; "Výraz je nepravdivý"), vrátí "Výraz je nepravdivý".
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, prázdných řetězců a nulových hodnot
V jazyku DAX je prázdná hodnota null, prázdná buňka nebo chybějící hodnota reprezentována stejným novým typem hodnoty BLANK. Prázdná pole můžete také vygenerovat pomocí funkce BLANK nebo testovat prázdná pole pomocí funkce ISBLANK.
Způsob zpracování prázdných náplní 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 jazykem DAX a Microsoft Excel vzorců způsobem zpracování prázdných tabulek.
Výraz |
JAZYK DAX |
Excel |
---|---|---|
PRÁZDNÉ+PRÁZDNÉ |
PRÁZDNÉ |
0 (nula) |
PRÁZDNÉ +5 |
5 |
5 |
PRÁZDNÉ * 5 |
PRÁZDNÉ |
0 (nula) |
5/BLANK |
Nekonečno |
Chyba |
0/BLANK |
NaN |
Chyba |
PRÁZDNÉ/PRÁZDNÉ |
PRÁZDNÉ |
Chyba |
NEPRAVDA NEBO PRÁZDNÉ |
FALSE |
FALSE |
NEPRAVDA A PRÁZDNÉ |
FALSE |
FALSE |
PRAVDA NEBO PRÁZDNÉ |
TRUE |
TRUE |
PRAVDA A PRÁZDNÉ |
NEPRAVDA |
PRAVDA |
PRÁZDNÉ NEBO PRÁZDNÉ |
PRÁZDNÉ |
Chyba |
PRÁZDNÉ A PRÁZDNÉ |
PRÁZDNÉ |
Chyba |
Podrobnosti o tom, jak konkrétní funkce nebo operátor zpracovává prázdné buňky, najdete v jednotlivých tématech jednotlivých funkcí jazyka DAX v části Referenční informace o funkcích jazyka DAX.