Sdílet prostřednictvím


operátory DAX

Jazyk Data Analysis Expression (DAX) 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

Pro provádění základních matematických operací, jako jsou sčítání, odčítání nebo násobení, kombinování čísel a dosažení číselných výsledků použijte následující aritmetické operátory.

Aritmetický operátor Význam Příklad
+ (znaménko plus) Přidání 3+3
- (znaménko minus) Odčítání nebo znaménko 3-1-1
* (hvězdička) Násobení 3*3
/ (lomítko) Dělení 3/3
^ (caret) Umocňování 16^4

Poznámka

Znaménko plus může fungovat jak jako binární operátor, tak 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 DAX vzorci na obou stranách binárního operátoru, DAX se pokusí tyto hodnoty přetypovat 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.

Porovnávací operátory

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, a to buď TRUE, nebo FALSE.

Operátor porovnání Význam Příklad
= Rovná se [Region] = "USA"
== Přísná rovnost [Region] == "USA"
> Větší než [Sales Date] > "leden 2009"
< Méně než [Datum prodeje] < "Jan 1 2009"
>= Větší nebo rovno [Částka] >= 20000
<= Menší nebo rovno [Částka] <= 100
<> Nerovná se [Region] <> "Spojené státy americké"

Všechny relační operátory kromě == považují BLANK za rovnou 0, prázdný řetězec "", DATE(1899, 12, 30) nebo FALSE. 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 (&) můžete spojit nebo zřetězit dva nebo více textových řetězců, aby vznikl jeden textový řetězec.

Textový operátor Význam Příklad
& (ampersand) Spojí nebo zřetězí dvě hodnoty, aby se vytvořila jedna souvislá textová hodnota. [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ý znak &) Vytvoří AND podmínku mezi dvěma výrazy, z nichž každý má logický výsledek. Pokud oba výrazy vrátí TRUE, vrátí kombinace výrazů také TRUE; v opačném případě kombinace vrátí FALSE. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (symbol dvojitého potrubí) Mezi dvěma logickými výrazy vytvoří podmínku OR. Pokud některý z výrazů vrátí TRUE, výsledek je TRUE; pouze pokud jsou oba výrazy FALSE je výsledek FALSE. (([Region] = "France") || ([BikeBuyer] = "yes"))
IN Vytvoří logickou OR podmínku 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 následující 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átoru

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
^ Umocňování
Znaménko (například –1)
* a / Násobení a dělení
+ a Sčítání a odčítání
& Spojí 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 do závorek uzavřít tu část vzorce, která musí být vypočítána 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 a 3 a pak k výsledku přičte 5.

=5+2*3

Naopak, pokud použijete závorky ke změně syntaxe, změní se pořadí tak, aby se sečetly 5 a 2 a výsledek byl vynásoben 3, aby vzniklo 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) nejprve a potom 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

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žbě SQL Server Analysis Services 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. Kromě toho DAX 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ší, DAX je v některých případech převede na společný datový typ, aby se mohl použít operátor.

  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] * .20a 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 DAX použije násobení.

V závislosti na kombinaci datového typu nemusí být převod typu použit pro porovnávací operace. Pro úplný seznam datových typů podporovaných DAX si přečtěte Datové typy podporované v tabulkových modelech a Datové typy 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ě
Číselný Číselný
Boolean Boolean
Řetězec Řetězec

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

Datové typy používané v DAX Datové typy používané v Excelu
Čísla (I8, R8) Čísla (R8)
Řetězec Řetězec
Boolean Boolean
Datum a čas Varianta
Měna Měna

Rozdíly v pořadí priority

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

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.

DAX syntaxeDAX – pojmenování parametru