operátory jazyka DAX,

Jazyk DAX (Data Analysis Expression) používá operátory k vytváření výrazů, které porovnávají hodnoty, provádějí aritmetické výpočty nebo pracují s řetězci.

Typy operátorů

Existují čtyři různé typy výpočetních operátorů: aritmetika, porovnání, zřetězení textu a logické.

Aritmetické operátory

Provádění základních matematických operací, jako je sčítání, odčítání nebo násobení; kombinování čísel; a vygenerujte číselné výsledky, použijte následující aritmetické operátory.

Aritmetický operátor Význam Příklad
+ (znaménko plus) Součet 3+3
– (znaménko minus) Odčítání nebo znaménko 3–1–1
* (hvězdička) Násobení 3*3
/ (lomítko) Divize 3/3
^ (stříška) Umocnění 16^4

Poznámka:

Znaménko plus může fungovat jako binární operátor i jako unární operátor. Binární operátor vyžaduje čísla na obou stranách operátoru a provádí sčítání. Pokud použijete hodnoty ve vzorci DAX na obou stranách binárního operátoru, jazyk DAX se pokusí přetypovat hodnoty na číselné datové typy, pokud ještě nejsou čísly. Naproti tomu unární operátor lze použít u libovolného typu argumentu. Symbol plus nemá vliv na typ nebo hodnotu a je jednoduše ignorován, zatímco operátor minus vytvoří zápornou hodnotu, pokud je použita na číselnou hodnotu.

Operátory porovnání

Můžete porovnat dvě hodnoty s následujícími operátory. Při porovnání dvou hodnot pomocí těchto operátorů je výsledkem logická hodnota PRAVDA nebo NEPRAVDA.

Relační operátor Význam Příklad
= Rovno [Region] = "USA"
== Je přesně rovno [Region] == "USA"
> Je větší než [Datum prodeje] > "Jan 2009"
< Je menší než [Datum prodeje] < "Jan 1 2009"
>= Větší než nebo rovno [Částka] >= 20000
<= Menší než nebo rovno [Částka] <= 100
<> Nikoli rovno [Oblast] <> "USA"

Všechny relační operátory s výjimkou == považují hodnotu BLANK za rovnou 0, prázdný řetězec "", DATUM(1899, 12, 30) nebo NEPRAVDA. Výsledkem je, že [Sloupec] = 0 bude true, pokud je hodnota [Sloupec] buď 0, nebo BLANK. Naproti tomu [Sloupec] == 0 je true pouze v případě, že hodnota [Sloupec] je 0.

Operátor zřetězení textu

Pomocí ampersandu (&) spojte nebo zřetězení dvou nebo více textových řetězců vytvořte jeden text.

Textový operátor Význam Příklad
&ersand) Připojení nebo zřetězení dvou hodnot pro vytvoření jedné souvislé textové hodnoty [Region] & ", " & [City]

Logické operátory

Pomocí logických operátorů (&&) a (||) zkombinujte výrazy a vytvořte jeden výsledek.

Textový operátor Význam Příklady
& (dvojitý ampersand) Vytvoří podmínku AND mezi dvěma výrazy, které mají každý logický výsledek. 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. ([Region] = "Francie") && ([BikeBuyer] = "yes"))
|| (symbol dvojité svislé roury) Vytvoří podmínku OR mezi dvěma logickými výrazy. Pokud některý z výrazů vrátí hodnotu PRAVDA, výsledek je PRAVDA; pouze v případech, kdy jsou oba výrazy NEPRAVDA, je výsledkem NEPRAVDA. (([Region] = "Francie") || ([BikeBuyer] = "yes"))
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. 'Product'[Color] IN { "Red", "Blue", "Black" }

Operátory a pořadí priorit

V některých případech může pořadí, ve kterém se výpočet provádí, ovlivnit návratové hodnoty; proto je důležité pochopit, jak je pořadí určeno a jak můžete změnit pořadí pro získání požadovaných výsledků.

Pořadí výpočtů

Výraz vyhodnotí operátory a hodnoty v určitém pořadí. Všechny výrazy vždy začínají symbolem rovná se (=). Symbol rovná se označuje, že úspěšné znaky představují výraz.

Za znaménkem rovná se jsou prvky, které se mají vypočítat (operandy), které jsou odděleny výpočetními operátory. Výrazy se vždy čtou zleva doprava, ale pořadí, ve kterém jsou prvky seskupené, lze řídit do určité míry pomocí závorek.

Priorita operátorů

Pokud zkombinujete několik operátorů v jednom vzorci, operace se seřadí podle následující tabulky. Pokud mají operátory stejnou hodnotu priority, jsou seřazené zleva doprava. Pokud například výraz obsahuje operátor násobení i dělení, vyhodnocují se v pořadí, v jakém se ve výrazu zobrazují, zleva doprava.

Operátor Popis
^ Umocnění
Přihlásit se (jako v -1)
*A/ Násobení a dělení
+ a – Sčítání a odčítání
& Připojení dva řetězce textu (zřetězení)
=,=,<,=<,>>=,=,<>,IN Porovnání
NOT NOT (unární operátor)

Použití závorek k řízení pořadí výpočtů

Pokud chcete změnit pořadí vyhodnocení, měli byste nejprve uzavřít do závorek, které musí být vypočítány jako první. Například následující vzorec vytvoří 11, protože násobení se vypočítá před sčítáním. Vzorec vynásobí 2 násobky 3 a pak k výsledku přičte 5.

=5+2*3  

Pokud k změně syntaxe použijete závorky, pořadí se změní tak, aby se sčítá 5 a 2 a výsledek vynásobil 3, aby se vytvořilo 21.

=(5+2)*3  

V následujícím příkladu závorky kolem první části vzorce vynutí výpočet vyhodnotit výraz (3 + 0.25) jako první a pak výsledek vydělit výsledkem výrazu (3 - 0.25).

=(3 + 0.25)/(3 - 0.25)  

V následujícím příkladu se nejprve použije operátor exponentiation podle pravidel priority pro operátory a poté se použije operátor znaménka. Výsledek tohoto výrazu je -4.

=-2^2  

Pokud chcete zajistit, aby se operátor znaménka použil na číselnou hodnotu jako první, můžete k řízení operátorů použít závorky, jak je znázorněno v následujícím příkladu. Výsledek tohoto výrazu je 4.

= (-2)^2  

Kompatibilita

JAZYK DAX snadno zpracovává a porovnává různé datové typy, podobně jako Microsoft Excel. Základní výpočetní modul je ale založený na Služba Analysis Services serveru SQL a poskytuje další pokročilé funkce relačního úložiště dat, včetně rozsáhlejší podpory pro typy data a času. Proto v některých případech nemusí být výsledky výpočtů nebo chování funkcí stejné jako v Excelu. Jazyk DAX navíc podporuje více datových typů, než excel. Tato část popisuje klíčové rozdíly.

Vynucení datových typů operandů

Obecně platí, že dva operandy na levé a pravé straně libovolného operátoru by měly být stejného datového typu. Pokud se ale datové typy liší, jazyk DAX je převede na běžný datový typ, aby operátor v některých případech použil:

  1. Oba operandy se převedou na největší možný společný datový typ.
  2. Pokud je to možné, použije se operátor.

Předpokládejme například, že máte dvě čísla, která chcete zkombinovat. Jedno číslo je výsledkem vzorce, například =[Price] * .20, a výsledek může obsahovat mnoho desetinných míst. Druhé číslo je celé číslo, které bylo zadáno jako řetězcová hodnota.

V tomto případě daX převede obě čísla na reálná čísla v číselném formátu pomocí největšího číselného formátu, který může ukládat oba druhy čísel. Potom jazyk DAX použije násobení.

V závislosti na kombinaci datového typu nemusí být převod typu použit pro operace porovnání. Úplný seznam datových typů podporovaných jazykem DAX najdete v tématu Datové typy podporované v tabulkových modelech a datových typech v Power BI Desktopu.

Celočíselné číslo, reálné číslo, měna, datum a čas a prázdné jsou pro účely porovnání považovány za číselné. Prázdná hodnota se při porovnávání vyhodnotí na nulu. Operace porovnání podporují následující kombinace datových typů.

Datový typ na levé straně Datový typ na pravé straně
Číslo Číslo
Logické Logické
String Řetězcové

Jiná porovnání smíšených datových typů vrátí chybu. Například vzorec = "1" > 0 vrátí chybu, která říká, že operace porovnání jazyka DAX nepodporují porovnávání hodnot typu Text s hodnotami typu Integer.

Datové typy používané v jazyce DAX Datové typy používané v Excelu
Čísla (I8, R8) Čísla (R8)
String Řetězcové
Logické Logické
DateTime Varianta
Měna Měna

Rozdíly v pořadí priority

Pořadí operací ve vzorcích DAX je v podstatě stejné jako pořadí, které používá Microsoft Excel, ale některé operátory Excelu se nepodporují, například procenta. Rozsahy se také nepodporují.

Proto vždy, když kopírujete a vkládáte vzorce z Excelu, nezapomeňte vzorec pečlivě zkontrolovat, protože některé operátory nebo prvky ve vzorcích nemusí být platné. Pokud máte pochybnosti o pořadí provádění operací, doporučuje se použít závorky k řízení pořadí operací a odebrání jakékoli nejednoznačnosti výsledku.

Syntaxe jazyka DAX
Pojmenování parametrů jazyka DAX