K ošetření dělení nulou je v jazyku DAX dostupná funkce DIVIDE(). Funkce DIVIDE() má dva povinné argumenty, které představují dělence a dělitele. Alternativně můžeme použít třetí volitelný argument. Třetí argument představuje alternativní výsledek, který bude výsledkem funkce DIVIDE() pokud se pokusíme dělit číslo nulou nebo prázdnou hodnotou BLANK. Pokud třetí argument s alternativním výsledkem nezadáme, je přednastaven na prázdnou hodnotu BLANK.
Syntaxe funkce DIVIDE() vypadá následovně.
Syntaxe funkce DIVIDE:
Prvním argumentem funkce DIVIDE() je dělenec, tedy ve zlomku horní hodnota. Druhým argumentem funkce DIVIDE() je dělitel - spodní hodnota ve zlomku.
Příklad DIVIDE
Počítaný sloupec:
Výsledek nového počítaného sloupce bude vypadat následovně.
Pokud se pokoušíme dělit nulou nebo hodnotou BLANK, výsledkem je speciální hodnota Infinity. S takto vytvořeným sloupcem již je obtížné pracovat, protože jakákoliv hodnota přičtená k hodnotě Infinity je vždy zase Infinity.Měřítko:
Měřítko [Suma výsledku dělení] proto bude vracet hodnotu Infinity vždy, pokud jedna z hodnot v aktuálním kontextu vyhodnocení bude obsahovat právě hodnotu Infinity.
Pokud mohou některé hodnoty ze sloupce určeného k dělení obsahovat prázdné hodnoty BLANK nebo hodnotu 0, můžeme k ošetření dělení nulou použít právě funkci DIVIDE().
Počítaný sloupec:
Výsledek nového počítaného sloupce můžeme vidět na následujícím obrázku.
Jak můžeme vidět, namísto hodnoty Infinity je v případě dělení nulou vrácen alternativní výsledek s prázdnou hodnotou BLANK. Namísto hodnoty BLANK pak můžeme ve třetím argumentu funkce DIVIDE() zadat vlastní alternativní výsledek.Počítaný sloupec:
Pokud zadáváme alternativní ve funkci DIVIDE() v počítaném sloupci, musíme si dát pozor na to, aby tento výsledek byl stejného datového typu jako výsledek dělení hodnot v prvních dvou argumentech. Jinak řečeno, v počítaném sloupci nemůžeme zadat jako alternativní výsledek ve funkci DIVIDE() text.
Funkci DIVIDE() můžeme samozřejmě použít k dělení také v měřítku. Na rozdíl od počítaného sloupce již můžeme v měřítku zadat alternativní výsledek ve funkci DIVIDE() i ve formě textu.
Měřítko:
Výše uvedené měřítko vrací v případě dělení nulou text uvedený ve třetím argumentu funkce DIVIDE().
Třetí argument funkce DIVIDE() musí být konstanta. Pokud bychom chtěli vrátit v případě dělení nulou hodnotu dělence, můžeme použít například funkci IFERROR().
Počítaný sloupec:
Výsledek nového počítaného sloupce pak vypadá následovně.
Jak je možné vidět na obrázku výše, v případě dělení nulou je výsledkem nového počítaného sloupce hodnota uvedená v dělenci.Shrnutí
Funkci DIVIDE() bychom měli používat v situacích kdy existuje možnost, že v děliteli může být hodnota 0 nebo BLANK. Pokud dělíme hodnotu konstantou, můžeme spolehlivě použít operátor dělení (/). Použití funkce DIVIDE() je z pohledu výkonnostního obvykle lepší než použití funkce IF(), IFERROR() nebo kombinace funkcí IF() a ISERROR() pro ověření, zda výraz nenabývá hodnoty 0 nebo BLANK. Další možností ošetření dělení nulou je použití filtrů ve funkci CALCULATE() před samotným dělením, nicméně tato pokročilá technika je již nad rámec tohoto příspěvku a její použití dává smysl pouze při práci obrovskými tabulkami, tedy v situacích kdy máme problém s rychlostí vyhodnocení výpočtu.
Oficiální Microsoft dokumentace funkce DIVIDE:
https://docs.microsoft.com/cs-cz/dax/divide-function-dax
Komentáře
Okomentovat