Práce s operátory jazyka DAX

Dokončeno

Vzorce DAX můžou pomocí operátorů vytvářet výrazy, které provádějí aritmetické výpočty, porovnávají hodnoty, pracují s řetězci nebo testují podmínky.

Tip

Mnoho operátorů DAX a pořadí priorit je stejných jako v Excelu.

Aritmetické operátory

Následující tabulka obsahuje aritmetické operátory.

Operátor Popis
+ Sčítání
- Odčítání
* Násobení
/ Dělení
^ Umocnění

Nezapomeňte, že když rozdělujete dva výrazy a jmenovatel může vrátit nulu nebo BLANK, je efektivnější a bezpečnější používat DIVIDE funkci DAX.

Relační operátory

V následující tabulce je uveden seznam relačních operátorů, které slouží k porovnání dvou hodnot. Výsledek je hodnota TRUE, nebo FALSE.

Operátor Popis
= Rovno
== Je přesně rovno
> Větší než
< Menší než
>= Větší než nebo rovno
<= Menší než nebo rovno
<> Není rovno

Všechny relační operátory, s výjimkou operátoru přesně rovno (==), považují prázdnou hodnotu za rovnou nule, prázdný řetězec (""), datum 30. prosince 1899, nebo za hodnotu FALSE. To znamená, že výraz [Revenue] = 0 bude true, pokud je hodnota [Revenue] nula nebo BLANK. Naproti tomu hodnota TRUE je pouze v případě, [Revenue] == 0 že je hodnota [Revenue] nula.

Operátor zřetězení textu

Pomocí znaku ampersand (&) můžete spojit neboli zřetězit dvě textové hodnoty a vytvořit z nich jednu souvislou textovou hodnotu. Podívejte se například na následující definici počítaného sloupce:

Model Color = 'Product'[Model] & "-" & 'Product'[Color]

Logické operátory

Pomocí logických operátorů můžete kombinovat výrazy, které vracejí jeden výsledek. V následující tabulce jsou uvedeny všechny logické operátory.

Operátor Popis
&& Vytvoří podmínku AND mezi dvěma výrazy, z nichž každý má jako výsledek logickou hodnotu. Pokud oba výrazy vrátí hodnotu TRUE, kombinace výrazů také vrátí hodnotu TRUE. V opačném případě kombinace vrátí hodnotu FALSE.
|| (dvojitá trubka) Vytvoří podmínku OR mezi dvěma logickými výrazy. Pokud některý výraz vrátí hodnotu TRUE, výsledek je TRUE. Výsledek je FALSE jenom v případě, že oba výrazy jsou FALSE.
IN Vytvoří logickou podmínku OR mezi jednotlivými řádky, které se porovnávají s tabulkou. Poznámka: Syntaxe konstruktoru tabulky používá složené závorky.
NOT Obrátí stav logického výrazu (FALSE na hodnotu TRUE a naopak).

Příkladem, který používá IN logický operátor, je definice míry VÝNOSY ANZ , která používá CALCULATE funkci DAX k vynucení konkrétního filtru dvou zemí: Austrálie a Nového Zélandu.

Poznámka

S výkonnou CALCULATE funkcí se seznámíte, až se dozvíte, jak upravit kontext filtru.

ANZ Revenue =
CALCULATE(
    [Revenue],
    Customer[Country-Region] IN {
        "Australia",
        "New Zealand"
    }
)

Priorita operátorů

Pokud je součástí vzorce jazyka DAX více operátorů, pořadí jejich vyhodnocování určují pravidla jazyka DAX. Tomuto postupu se říká priorita operátorů. Operace se řadí podle následující tabulky.

Operátor Popis
^ Umocnění
- Znaménko (např. -1)
* a / Násobení a dělení
NOT NOT
+ a - Sčítání a odčítání
& Zřetězení dvou textových řetězců
=,==,<,>,=<,=,><> Porovnání

Pokud mají operátory stejnou hodnotu priority, jsou seřazené zleva doprava.

Obecně platí, že priorita operátorů je stejná jako v Excelu. Pokud potřebujete změnit pořadí vyhodnocování, řešením je seskupení operací do závorek.

Podívejte se například na následující definici počítaného sloupce:

Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]

Tato ukázková definice počítaného sloupce vrátí nesprávný výsledek, protože násobení proběhne před odčítáním. Následující správná definice počítaného sloupce používá závorky, aby bylo jisté, že odčítání proběhne před násobením.

Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])

Tip

Zapamatovat si prioritu operátorů není jednoduché, zejména pokud s jazykem DAX teprve začínáte pracovat. Proto doporučujeme vzorce důkladně testovat. Pokud vzorce nevrací správný výsledek kvůli nesprávnému pořadí vyhodnocení operací, můžete experimentovat přidáním závorek, abyste toto pořadí změnili. Díky závorkám budou vaše vzorce také lépe čitelné.

Další informace o operátorech jazyka DAX a pořadí priorit najdete v tématu Operátory DAX.

Implicitní převod

Při psaní vzorce DAX, který používá operátory ke kombinování různých datových typů, nemusíte explicitně převádět typy. Jazyk DAX obvykle automaticky identifikuje datové typy odkazovaných objektů modelu a provádí implicitní převody tam, kde je to nutné pro dokončení zadané operace.

U hodnot, které se dají úspěšně převést, ale mohou existovat nějaká omezení. Pokud má hodnota nebo sloupec datový typ, který je nekompatibilní s aktuální operací, DAX vrátí chybu. Například pokus o vynásobení hodnoty data vytvoří chybu, protože se nejedná o logickou operaci.

BLANK se zpracovává odlišně v závislosti na použitém operátoru. Zpracovává se podobně jako v případě, že aplikace Excel pracuje s prázdnou hodnotou, ale liší se způsobem, jakým databáze (SQL) pracuje s hodnotou NULL. Když chcete s prázdnou hodnotou pracovat pomocí aritmetických operátorů nebo ji chcete zřetězit s dalším řetězcem, bude považována za nulu.

Tip

Zapamatovat si, jak se v konkrétních případech nakládá s prázdnou hodnotou, není jednoduché, zejména pokud s jazykem DAX teprve začínáte pracovat. Proto doporučujeme vzorce důkladně testovat. Pokud funkce BLAN vytvoří neočekávané výsledky, zvažte použití funkcí JAZYKa IF DAX a ISBLANK k otestování hodnoty BLANK a pak odpovídajícím způsobem reagovat.