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ď TRUE
orFALSE
.
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 |
---|---|---|
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:
- Oba operandy se převedou na největší možný společný datový typ.
- 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.