Zdieľať cez


operátory DAX

Jazyk Data Analysis Expression (DAX) používa operátory na vytvorenie výrazov, ktoré porovnávajú hodnoty, vykonávajú aritmetické výpočty alebo pracujú s reťazcami.

Typy operátorov

Existujú štyri rôzne typy výpočtových operátorov: aritmetické, porovnávacie, spájanie reťazcov a logické.

Aritmetické operátory

na vykonávanie základných matematických operácií, ako je sčítanie, odčítanie alebo násobenie; kombinovať čísla; a vyprodukujte číselné výsledky, použite nasledujúce aritmetické operátory.

Aritmetický operátor Význam Príklad
+ (znamienko plus) Sčítanie 3+3
- (znamienko mínus) Odčítanie alebo znamienko 3-1-1
* (hviezdička) Násobenie 3*3
/ (lomka) Delenie 3/3
^ (vsuvka) Umocnenie 16^4

Nota

Znamienko plus môže fungovať ako binárny operátor aj ako unárny operátor. Binárny operátor vyžaduje čísla na oboch stranách operátora a vykoná sčítanie. Keď použijete hodnoty vo vzorci DAX na oboch stranách binárneho operátora, DAX sa pokúsi odovzdať hodnoty do číselných typov údajov, ak už nie sú číslami. Na rozdiel od toho možno unárny operátor použiť na akýkoľvek typ argumentu. Symbol plus nemá vplyv na typ alebo hodnotu a jednoducho sa ignoruje, zatiaľ čo operátor mínus vytvorí zápornú hodnotu, ak sa použije na číselnú hodnotu.

Operátory porovnávania

Pomocou nasledujúcich operátorov môžete porovnať dve hodnoty. Keď sa porovnávajú dve hodnoty pomocou týchto operátorov, výsledkom je logická hodnota, a to buď TRUE, alebo FALSE.

Operátor porovnávania Význam Príklad
= Rovná sa [Oblasť] = "USA"
== Striktne sa rovná [Oblasť] == "USA"
> Väčšie ako [Dátum predaja] > "Jan 2009"
< Menšie ako [Dátum predaja] < "1. jan 2009"
>= Väčšie ako alebo rovná sa [Suma] >= 20000
<= Menšie ako alebo rovná sa [Suma] <= 100
<> Nerovná sa [Oblasť] <> "USA"

Všetky operátory porovnania s výnimkou == považujú BLANK za rovné 0, prázdny reťazec "", DATE(1899, 12, 30) alebo FALSE. Výsledkom je, že [Stĺpec] = 0 bude true, keď hodnota [Stĺpec] je 0 alebo BLANK. Na rozdiel od toho [Stĺpec] == 0 je true len vtedy, keď hodnota [Stĺpec] je 0.

Operátor spájania reťazcov

Pomocou znaku ampersand (&) môžete spojiť alebo zreťaziť dva alebo viacero textových reťazcov a vytvoriť tak jeden kus textu.

Operátor textu Význam Príklad
& (ampersand) Spája alebo zreťazuje dve hodnoty, čím vytvorí jednu spojitú textovú hodnotu [Region] & ", " & [City]

Logické operátory

Pomocou logických operátorov (&&) a (||) môžete kombinovať výrazy a vytvoriť tak jeden výsledok.

Operátor textu Význam Príklady
&&(dvojitý znak) Vytvorí AND podmienku medzi dvomi výrazmi, ktoré majú každý z nich booleovský výsledok. Ak oba výrazy vrátia TRUE, aj kombinácia výrazov vráti TRUE; V opačnom prípade kombinácia vráti FALSE. ([Region] = "France") && ([BikeBuyer] = "yes"))
|| (symbol dvojitej zvislej čiary) Vytvorí OR podmienku medzi dvomi logickými výrazmi. Ak niektorý z výrazov vráti TRUE, výsledok je TRUE; iba ak sú obidva výrazy FALSE je výsledkom FALSE. (([Region] = "France") || ([BikeBuyer] = "yes"))
IN Vytvorí logickú OR podmienku medzi jednotlivými riadkami, ktoré sa porovnávajú s tabuľkou. Poznámka: syntax konštruktora tabuľky používa zložené zátvorky. 'Product'[Color] IN { "Red", "Blue", "Black" }

Operátory a poradie priority

V niektorých prípadoch môže poradie, v ktorom sa vykonáva výpočet, ovplyvniť vrátenú hodnotu; Preto je dôležité pochopiť, ako sa určuje poradie a ako môžete zmeniť poradie, aby ste dosiahli požadované výsledky.

Poradie výpočtu

Výraz vyhodnotí operátory a hodnoty v konkrétnom poradí. Všetky výrazy vždy začínajú znamienkom rovnosti (=). Znamienko rovnosti označuje, že nasledujúce znaky predstavujú výraz.

Po znamienku rovnosti sú prvky, ktoré sa majú vypočítať (operandy), ktoré sú oddelené výpočtovými operátormi. Výrazy sa vždy čítajú zľava doprava, ale poradie, v ktorom sú prvky zoskupené, možno do určitej miery ovládať pomocou zátvoriek.

Poradie operátorov podľa priority

Ak skombinujete niekoľko operátorov v jednom vzorci, operácie sa zoradia podľa nasledujúcej tabuľky. Ak majú operátory rovnakú hodnotu priority, zoradia sa zľava doprava. Ak výraz napríklad obsahuje operátor násobenia aj delenia, vyhodnotia sa v poradí, v akom sú uvedené vo výraze, zľava doprava.

Operátor Popis
^ Umocnenie
Znamienko (napríklad –1)
* a / Násobenie a delenie
+ a Sčítanie a odčítanie
& Spojí dva reťazce textu (zreťazenie)
=,==,<,>,<=,>=,<>,IN Porovnanie
NOT NOT (unárny operátor)

Použitie zátvoriek na kontrolu poradia výpočtu

Ak chcete zmeniť poradie vyhodnocovania, musíte do zátvoriek uzavrieť tú časť vzorca, ktorá musí vypočítať ako prvá. Nasledujúci vzorec napríklad vytvorí hodnotu 11, pretože násobenie sa vypočíta pred sčítaním. Vzorec vynásobí 2 číslom 3 a potom k výsledku pripočíta 5.

=5+2*3

Naopak, ak používate zátvorky na zmenu syntaxe, poradie sa zmení tak, aby sa 5 a 2 spočítali a výsledok sa vynásobí 3, čím vytvoríte 21.

=(5+2)*3

V nasledujúcom príklade zátvorky okolo prvej časti vzorca vynúti výpočet na vyhodnotenie výrazu (3 + 0.25) a potom rozdeľte výsledok výsledkom výrazu (3 - 0.25).

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

V nasledujúcom príklade sa operátor umocnenia použije ako prvý podľa pravidiel poradia podľa priority operátorov a potom sa použije znamienkov. Výsledok pre tento výraz je -4.

=-2^2

Ak chcete zabezpečiť, aby sa znamienkov operátor použil najprv na číselnú hodnotu, môžete na ovládanie operátorov použiť zátvorky, ako je to znázornené v nasledujúcom príklade. Výsledok pre tento výraz je 4.

= (-2)^2

Kompatibilita

DAX jednoducho spracováva a porovnáva rôzne typy údajov, podobne ako Microsoft Excel. Základný nástroj na výpočet je však založený na službe SQL Server Analysis Services a poskytuje ďalšie pokročilé funkcie ukladacieho priestoru relačných údajov vrátane bohatšej podpory pre typy dátumu a času. Preto v niektorých prípadoch výsledky výpočtov alebo správanie funkcií nemusia byť rovnaké ako v programe Excel. Okrem toho DAX podporuje viac typov údajov ako Excel. Táto časť popisuje kľúčové rozdiely.

Vynútenie typov údajov operandov

Vo všeobecnosti by mali byť dva operandy na ľavej a pravej strane ľubovoľného operátora rovnakého typu údajov. Ak sú však typy údajov iné, DAX ich skonvertujú na spoločný typ údajov, aby v niektorých prípadoch použil operátor:

  1. Oba operandy sa konvertujú na najväčší možný spoločný typ údajov.
  2. Ak je to možné, použije sa operátor.

Predpokladajme napríklad, že máte dve čísla, ktoré chcete skombinovať. Jedno číslo je výsledkom vzorca, napríklad =[Price] * .20, a výsledok môže obsahovať veľa desatinných miest. Druhé číslo je celé číslo, ktoré bolo zadané ako hodnota reťazca.

V tomto prípade DAX skonvertuje obe čísla na reálne čísla v číselnom formáte pomocou najväčšieho číselného formátu, ktorý dokáže ukladať obidva druhy čísel. Potom DAX použije násobenie.

V závislosti od kombinácie typu údajov sa pre operácie porovnávania nemusí použiť vynútenie. Úplný zoznam typov údajov podporovaných DAXnájdete v téme Typy údajov podporované v tabuľkových modeloch a Typy údajov v aplikácii Power BI Desktop.

Celé číslo, reálne číslo, mena, dátum a čas a prázdna hodnota sa považujú za číselné na účely porovnávania. Pri porovnávaní sa prázdna hodnota vyhodnotí ako nula. Pre operácie porovnania sú podporované nasledujúce kombinácie údajových typov.

Typ údajov na ľavej strane Typ údajov na pravej strane
Numerický Numerický
booleovský booleovský
Povrázok Povrázok

Iné porovnávania zmiešaného typu údajov vrátia chybu. Napríklad vzorec = "1" > 0 vráti chybu, ktorá uvádza, že DAX operácie porovnávania nepodporujú porovnávanie hodnôt typu Text s hodnotami typu Celé číslo.

Typy údajov používané v službe DAX Typy údajov používané v Exceli
Čísla (i8, R8) Čísla (R8)
Povrázok Povrázok
booleovský booleovský
Dátum a čas Variant
Mena Mena

Rozdiely v poradí podľa priority

Poradie operácií podľa priority vo vzorcoch DAX je v podstate rovnaké ako v programe Microsoft Excel, ale niektoré operátory programu Excel nie sú podporované, napríklad percento. Ani rozsahy nie sú podporované.

Preto vždy, keď skopírujete a prilepíte vzorce z Excelu, nezabudnite pozorne skontrolovať vzorec, pretože niektoré operátory alebo prvky vo vzorcoch nemusia byť platné. Ak máte pochybnosti o poradí, v ktorom sa vykonávajú operácie, odporúča sa určovať poradie operácií a odstrániť nejasnosti o výsledku pomocou zátvoriek.