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í values, provádějí aritmetické výpočty, or pracovat 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, and logické.

Aritmetické operátory

K provádění základních matematických operací, jako je sčítání, odčítání, or násobení, kombinování čísel a and vytváření číselných výsledků, použijte následující aritmetické operátory.

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

Poznámka

sign plus může fungovat jak jako binární operátorand, tak i jako unární operátor. Binární operátor vyžaduje čísla na obou stranách; operátor and provádí sčítání. Když použijete values ve vzorci DAX na obou stranách binárního operátoru, DAX se pokusí přetypovat values na číselné datové typy if jsou už čísla not. Naproti tomu unární operátor lze použít u libovolného typu argumentu. Symbol plus not neovlivňuje typ orvalueand a je jednoduše ignorován, zatímco operátor minus vytvoří negativní value, if aplikovaný na číselnou hodnotu value.

Porovnávací operátory

Můžete porovnat dva values s následujícími operátory. Při porovnání dvou values pomocí těchto operátorů je výsledkem logický value, a to buď TRUEorFALSE.

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ž [Sales Date] < "1. ledna 2009"
>= Větší než or nebo rovno [Částka] >= 20000
<= Menší než or rovno [Částka] <= 100
<> Not se rovná [Region] <> "Spojené státy americké"

All relační operátory except == považují BLANK za rovnou 0, prázdný řetězec "", DATE(1899, 12, 30), orFALSE. Výsledkem je, že [Sloupec] = 0 bude true, pokud je value [Sloupec] buď 0 orBLANK. Naproti tomu [Sloupec] == 0 je true pouze v případě, že value [Sloupec] je 0.

Operátor zřetězení textu

Ampersand (&) slouží ke spojení, orconcatenate, dvou or více textových řetězců k vytvoření jediné části textu.

Textový operátor Význam Příklad
& (ampersand) Připojí or, zřetězí dvě values, aby vznikl jeden souvislý text value. [Region] & ", " & [City]

Logické operátory

Pomocí logických operátorů (&&) and (||) 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, které mají každý logický výsledek. If oba výrazy vrací TRUE, kombinace výrazů také vrací TRUE; jinak kombinace vrátí FALSE. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (symbol dvojitého potrubí) Mezi dvěma logickými výrazy vytvoří podmínku OR. If některý výraz vrátí TRUE, výsledek je TRUE; pouze tehdy, když 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" }

Pořadí priorit operátorů and

V některýchpřípadechch valuech proto je důležité pochopit, jak je pořadí určeno and jak můžete změnit pořadí na získání požadovaných výsledků.

Pořadí výpočtů

Výraz vyhodnotí operátory andvalues v určitém pořadí. All výrazy vždy začínají stejným sign (=). Symbol sign označuje, že následující znaky představují výraz.

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

Priorita operátoru

If zkombinujete několik operátorů v jednom vzorci, operace jsou seřazené podle následující tabulky. If mají operátory stejnou prioritu valuea jsou seřazeny od left do right. Například if výrazu contains operátoru násobení and dělení se vyhodnocují v pořadí, v jakém se zobrazují ve výrazu, od left po right.

Operátor Popis
^ Umocňování
Sign (například –1)
* and / Dělení and násobení
+ and Sčítání and 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 first. 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 o 3, and pak k výsledku přičte 5.

=5+2*3  

Naproti tomu if ke změně syntaxe použijete závorky, pořadí se změní tak, aby se sečetly 5 and 2, and výsledek se vynásobí 3, aby byl výsledkem 21.

=(5+2)*3  

V následujícím příkladu závorky kolem first části vzorce vynutí výpočet evaluate výraz (3 + 0.25)firstand pak divide výsledek výrazu (3 - 0.25).

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

V následujícím příkladu se použije operátor exponentiation first, podle pravidel priority pro operátory, and pak se použije operátor sign. Výsledek tohoto výrazu je -4.

=-2^2  

Chcete-li zajistit, aby se operátor sign použil na číselný valuefirst, 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á and 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 and poskytuje další pokročilé funkce relačního úložiště dat, včetně rozsáhlejší podpory pro typy dateandtime. Proto v některých případech mohou být výsledky výpočtů or chování funkcí not 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 leftandright stranách libovolného operátoru by měly být stejného datového typu. if se ale datové typy liší, DAX je convert na společný datový typ, aby bylo možné v některých případech použít operátor:

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

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

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

V závislosti na kombinaci datového typu může převod typu not použít pro operace porovnání. Úplný seznam datových typů podporovaných DAXnajdete v tématu Datové typy podporované v tabulkových modelechandDatové typy v Power BI Desktopu.

Celé číslo, reálné číslo, Currency, Date/timeandBlank jsou považovány za číselné pro účely porovnání. Blank se při porovnávání vyhodnotí na nulu. Operace porovnání podporují následující kombinace datových typů.

datový typ na straně Left Datový typ strany Right
Číselný Číselný
Boolean Boolean
Řetězec Řetězec

Jiná porovnání smíšených datových typů vrátí error. Například vzorec, například ="1" > 0 vrátí error, že operace porovnání notDAX podporují porovnávání values typu Text s values 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
Currency Currency

Rozdíly v pořadí priority

Pořadí operací v DAX vzorcích je v podstatě stejné jako v Microsoft Excelu, ale některé operátory Excelu se not podporují, například procenta. Také rozsahy not jsou podporovány.

Proto vždy, když kopírujete and vkládat vzorce z Excelu, nezapomeňte vzorec pečlivě zkontrolovat, protože některé operátory or prvky ve vzorcích mohou not platné. Pokud máte pochybnosti o pořadí, ve kterém se operace provádějí, doporučujeme použít závorky k řízení pořadí operací and odebrat všechny nejednoznačnosti výsledku.

DAX syntaxe
DAX pojmenování parametrů