DAX-operátorok használata
A DAX-képletek operátorok használatával olyan kifejezéseket hozhatnak létre, amelyek számtani számításokat hajtanak végre, értékeket hasonlítanak össze, sztringekkel dolgoznak, vagy tesztelési feltételeket hajtanak végre.
Tipp
A DAX számos operátora és azok műveleti sorrendje is ugyanaz, mint az Excelben.
Aritmetikai operátorok
Az alábbi táblázat az aritmetikai operátorokat sorolja fel.
Operátor | Leírás |
---|---|
+ | Összeadás |
- | Kivonás |
* | Szorzás |
/ | Osztás |
^ | Hatványozás |
Ne feledje, hogy ha két kifejezést oszt el, és amikor a nevező nullát vagy BLANK értéket adhat vissza, hatékonyabb és biztonságosabb a DIVIDE
DAX-függvény használata.
Összehasonlító operátorok
Az alábbi táblázat a két érték összehasonlítására használható összehasonlító operátorokat sorolja fel. Ezek eredménye TRUE vagy FALSE (igaz vagy hamis) lehet.
Operátor | Leírás |
---|---|
= | Egyenlő |
== | Szigorúan egyenlő |
> | Nagyobb, mint |
< | Kisebb, mint |
>= | Nagyobb vagy egyenlő |
<= | Kisebb vagy egyenlő |
<> | Nem egyenlő |
A szigorú egyenlőség (==) kivételével minden összehasonlító operátor nullaként, üres sztringként („”), az 1899. december 30. dátumként vagy a FALSE értékként kezeli a BLANK értéket. Ez azt jelenti, hogy a kifejezés [Revenue] = 0
IGAZ lesz, ha a értéke [Revenue]
nulla vagy ÜRES. Ezzel szemben csak akkor IGAZ, [Revenue] == 0
ha a értéke [Revenue]
nulla.
Szövegösszefűző operátor
Az & karakter két szöveges értéke összefűzésére használható egyetlen összefüggő szöveges érték előállításához. Figyelje meg például az alábbi számított oszlop definíciót:
Model Color = 'Product'[Model] & "-" & 'Product'[Color]
Logikai operátorok
Logikai operátorokkal több kifejezést kombinálhat, hogy egyetlen eredményt állítson elő. Az alábbi táblázat az összes logikai operátort felsorolja.
Operátor | Leírás |
---|---|
&& | ÉS műveletet végez két olyan kifejezéssel, amelyek mindegyikének logikai eredménye van. Ha mindkét kifejezés eredménye TRUE, akkor a kifejezések kombinációja is a TRUE értéket adja vissza. A művelet eredménye minden más esetben FALSE. |
|| (kettős cső) | Két logikai kifejezés között hoz létre VAGY kapcsolatot. Ha a kifejezések bármelyike a TRUE (igaz) értéket adja vissza, az eredmény TRUE. Az eredmény csak akkor FLASE (hamis), ha mindkét kifejezés értéke FALSE. |
IN | Logikai VAGY műveltet végez minden sorban egy táblával való összehasonlításkor. Megjegyzés: A táblakonstruktor szintaxisa kapcsos zárójeleket használ. |
NOT | Invertálja egy logikai kifejezés állapotát (a FALSE értéket TRUE-ra és fordítva). |
A logikai operátort használó IN
példa az ANZ Revenue mértékdefiníciója, amely a CALCULATE
DAX függvénnyel kényszeríti ki két ország, Ausztrália és Új-Zéland adott szűrőjének kényszerítésére.
Megjegyzés
A nagy teljesítményű CALCULATE
függvényt akkor vezetjük be, ha megtanulja, hogyan módosíthatja a szűrőkörnyezetet.
ANZ Revenue =
CALCULATE(
[Revenue],
Customer[Country-Region] IN {
"Australia",
"New Zealand"
}
)
Operátorok műveleti sorrendje
Ha a DAX-képlet több operátort is tartalmaz, a DAX szabályok alapján határozza meg a műveletek kiértékelésének sorrendjét, más szóval az operátorok precedenciáját. A műveletek sorrendje az alábbi táblázatnak felel meg.
Operátor | Leírás |
---|---|
^ | Hatványozás |
- | Előjel (például: -1) |
* és / | Szorzás és osztás |
NOT | Tagadás |
+ és - | Összeadás és kivonás |
& | Két szöveges sztring összefűzése |
=,==,<,>,<=,>=,<> | Összehasonlítás |
Ha az operátorok elsőbbséget élveznek, balról jobbra rendezik őket.
Az operátorok precedenciája általában ugyanaz, mint az Excelben. Ha felül kell bírálnia a kiértékelési sorrendet, zárójelekkel csoportosíthat operátorokat.
Figyelje meg például az alábbi számított oszlop definíciót:
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * 1 - [Unit Price Discount Pct]
Ennek a számított oszlopnak az egyszerű definíciója helytelen eredményt ad, mert a szorzás megelőzi a kivonást. A számított oszlop alábbi, helyes definíciója zárójelekkel biztosítja, hogy a kivonások a szorzások előtt legyenek elvégezve.
Extended Amount = Sales[Order Quantity] * Sales[Unit Price] * (1 - [Unit Price Discount Pct])
Tipp
A műveleti sorrendre vonatkozó szabályokat nem könnyű megjegyezni, különösen a kezdő DAX-felhasználók számára. Emiatt ajánlott a képleteket alaposan tesztelni. Ha a képletek a helytelen kiértékelési sorrend miatt nem a helyes eredményt állítják elő, akkor megpróbálhatja zárójelek beszúrásával módosítani a kiértékelés sorrendjét. Zárójeleket a képletek jobb olvashatósága érdekében is használhat.
A DAX-operátorokkal és azok precedenciájáról a DAX-operátorok című cikk nyújt további információkat.
Implicit konverzió
Ha olyan DAX-képletet ír, amelyben különböző adattípusokat kombináló operátorokat használ, nem kell explicit módon konvertálnia a típusokat. A DAX többnyire automatikusan felismeri a hivatkozott modellobjektumok adattípusát, és implicit konverziókat végez, ha ez szükséges az adott művelet végrehajtásához.
A sikeresen konvertálható értékekre azonban bizonyos korlátozások vonatkozhatnak. Ha egy érték vagy egy oszlop olyan adattípussal rendelkezik, amely nem kompatibilis az aktuális művelettel, a DAX hibát fog jelezni. Egy dátummal végzett szorzásra tett kísérlet például hibát eredményez, mert nem logikus.
A BLANK kezelése a használt operátortól függően eltérően történik. A kezelése inkább ahhoz hasonlít, ahogyan az Excel kezeli az ÜRES értékeket, nem pedig ahhoz, ahogyan az adatbázisok (SQL) kezelik a NULL értéket. A BLANK nullának számít az aritmetikai operátorok szempontjából, és üres sztringnek, ha sztringhez van hozzáfűzve.
Tipp
A BLANK kezelési módjait nem könnyű megjegyezni, különösen a kezdő DAX-felhasználók számára. Emiatt ajánlott a képleteket alaposan tesztelni. Ha a BLANK-k nem várt eredményeket hoznak létre, érdemes lehet a és ISBLANK
a IF
DAX-függvényt használni a BLANK teszteléséhez, majd a megfelelő módon válaszolni.