Megosztás a következőn keresztül:


DAX szintaxis

Ez a cikk a and követelményeket írja le a DAX képletkifejezés nyelvének szintaxisához.

Szintaxisra vonatkozó követelmények

A DAX képletek mindig egyenlő sign (=) kezdődnek. Az egyenlő signután bármely olyan kifejezést megadhat, amely skalárissá értékel, or egy skalárissá konvertálható kifejezést. Ezek közé tartoznak a következők:

  • Skaláris állandó, or skaláris operátort használó kifejezés (+,-,*,/,>=,...,&&, ...)

  • or táblákra mutató oszlopokra vonatkozó hivatkozások. A DAX nyelv mindig táblákat and oszlopokat használ a függvények bemeneteként, soha nem tömböt or tetszőleges valueskészletet.

  • Egy kifejezés részeként megadott operátorok, állandók, andvalues.

  • A and függvény eredménye a szükséges paramétereitől függ. Egyes DAX függvények skaláris helyett táblát adnak vissza, and olyan függvénybe kell csomagolni, amely kiértékeli a táblát, and skalárt ad vissza; kivéve, ha a tábla egyetlen oszlopból, egysoros táblázatból áll, akkor skaláris value.

    A legtöbb DAX függvényhez egy or további argumentum szükséges, amelyek tartalmazhatnak táblákat, oszlopokat, kifejezéseket, andvalues. Egyes függvények, például a PIazonban not argumentumokat igényelnek, de a null argumentumot mindig zárójelek jelzik. Például mindig be kell gépelnie PI(), notPI. A függvényeket más függvényekbe is beágyazhatja.

  • Kifejezések. A kifejezések a következők bármelyik orall tartalmazhatják: operátorok, állandók, or oszlopokra mutató hivatkozások.

Az alábbiak például all érvényes képletek.

Képlet Eredmény
= 3 3
= "Sales" Értékesítési
= 'Sales'[Amount] If ezt a képletet a Sales táblában használja, az aktuális sor Sales táblájának Mennyiség oszlopának value fogja megkapni.
= (0.03 *[Amount])

=0.03 * [Amount]
A value három százaléka az aktuális tábla Összeg oszlopában.

Bár ez a képlet használható százalékok kiszámításához calculate, az eredmény nem százalékként not jelenik meg, kivéve, ha formázást alkalmaz a táblázatban.
= PI() Az piállandó value-ja.

A képletek a használatuk módjától függően eltérően viselkedhetnek. Mindig tisztában kell lennie a környezettel and, hogy a képletben használt adatok hogyan related más, a számítás során felhasználható adatokra.

Elnevezési követelmények

Az adatmodellek gyakran több táblát contains. A táblák and oszlopaik egy memórián belüli elemzési motorban (VertiPaq) tárolt adatbázist alkotnak. Az adatbázisban all tábláknak egyedi névvel kell rendelkezniük. Az oszlopok nevének az egyes táblákon belül is egyedinek kell lennie. objektumnevek kis- és nagybetűket nem érzékeny; Például a SALESSales nevek ugyanazt a táblát jelölnék.

A meglévő adatmodellhez hozzáadott andmeasure összes oszlopnak egy adott táblához kell tartoznia. Az oszlopot implicit módon contains táblát adja meg, amikor számított oszlopot hoz létre egy táblában, or explicit módon, amikor létrehoz egy measureand adja meg annak a táblának a nevét, amelyben a measure definíciót tárolni kell.

Ha tábla or oszlopot használ egy függvény bemeneteként, általában kell minősítenie az oszlop nevét. Az oszlop teljes neve a tábla neve, majd az oszlop neve szögletes zárójelben: például:"U.S. Sales"[Products]. A teljes név mindig kötelező, amikor az alábbi körülmények között hivatkozik egy oszlopra:

  • A függvény argumentumaként VALUES

  • A függvények argumentumaként ALLorALLEXCEPT

  • A függvények filter argumentumában CALCULATEorCALCULATETABLE

  • A függvény argumentumaként RELATEDTABLE

  • Bármely time intelligenciafüggvény argumentumaként

A nem specifikált oszlopnév csupán annyit jelent, hogy az oszlop nevét szögletes zárójelek közé zárják, például: [Sales Amount]. Például, ha az aktuális táblázat ugyanazon sorából a skaláris value-ra hivatkozik, használhatja az egyszerű oszlopnevet.

If tábla nevét contains szóközök, fenntartott kulcsszavak, or nem engedélyezett karakterek, a tábla nevét egyetlen idézőjelbe kell foglalnia. A táblaneveket idézőjelek közé kell foglalnia, if a név contains az ANSI alfanumerikus karaktertől rangekívül eső karaktereket, függetlenül attól, hogy a területi beállítás támogatja-e a ornotkarakterkészletet. Például if olyan munkafüzetet nyit meg, amely cirill karakterekkel contains táblázatneveket ( például "Таблица"), a tábla nevét idézőjelek közé kell foglalni, even azonban not szóközöket tartalmaz.

Jegyzet

Az oszlopok teljes neveinek könnyebb megadásához használja az Automatikus kiegészítés funkciót a képletszerkesztőben.

Táblázatok

  • A táblanevek akkor szükségesek, ha az oszlop az aktuális táblától eltérő táblából származik. A táblaneveknek egyedinek kell lenniük az adatbázisban.

  • A táblázatneveket idézőjelek közé kell foglalni, if szóközöket, más speciális karaktereket or a nem angol alfanumerikus karaktereket.

Intézkedések

  • Measure neveknek mindig zárójelben kell lenniük.

  • Measure nevek szóközöket tartalmazhatnak.

  • Minden measure névnek egyedinek kell lennie egy modellben. Ezért a táblanév nem kötelező egy measure név előtt, amikor egy meglévő measure-re hivatkozunk. Ha azonban measure hoz létre, mindig meg kell adnia egy táblát, amelyben a measure definíció lesz tárolva.

Oszlopok

Az oszlopneveknek egyedinek kell lenniük egy tábla kontextusában; azonban több tábla is rendelkezhet azonos nevű oszlopokkal (egyértelműsítés a tábla nevével együtt).

Az oszlopokra általában hivatkozhatunk anélkül, hogy hivatkoznunk kellene az alaptáblára, amelyhez tartoznak, except amikor névütközés léphet fel or esetén bizonyos függvényekkel, amelyek megkövetelik az oszlopnevek teljes körű megadását.

Fenntartott kulcsszavak

If a táblához használt név megegyezik a fenntartott Analysis Services-kulcsszóval, error keletkezik, and át kell neveznie a táblát. Az objektumnevekben azonban kulcsszavakat is használhat, if az objektum neve szögletes zárójelekben (oszlopok esetén) or idézőjelek (táblák esetén).

Jegyzet

Az idézőjeleket az alkalmazástól függően több különböző karakter is jelölheti. If képleteket illeszt be egy külső dokumentumból or weblapról, ellenőrizze a and záró idézőjelek megnyitásához használt karakter ASCII-kódját, hogy azok megegyeznek-e. Ellenkező esetben előfordulhat, hogy DAX nem tudja felismerni a szimbólumokat idézőjelként, érvénytelenné téve a hivatkozást.

Speciális karakterek

A következő karakterek and karaktertípusok not érvényesek a táblák, oszlopok és or mértékek nevében:

  • Vezető or záró szóközök; kivéve, ha a szóközöket névhatárolók, zárójelek, or egyetlen aposztrófok közé zárják.

  • Vezérlőkarakterek

  • Az alábbi karakterek not érvényesek az objektumok nevében:

    .,;':/\\*|?&%$!+=()[]{}<>

Példák objektumnevekre

Az alábbi táblázat néhány objektumnévre mutat be példákat:

Objektumtípusok Példák Megjegyzés
Tábla neve Értékesítési If a táblanév not szóközöket or más speciális karaktereket tartalmaz, a névnek idézőjelek közé kell helyeznie not.
Tábla neve "Kanada értékesítés" If a név contains szóközöket, tabulátorokat or más speciális karaktereket, a nevet egyetlen idézőjelbe kell foglalnia.
Teljesen kvalifikált oszlopnév Értékesítés[Összeg] A tábla neve megelőzi az oszlopnevet, and az oszlop neve szögletes zárójelek közé van zárva.
Teljesen definiált measure név Értékesítés[Nyereség] A tábla neve megelőzi a measure nevét, and a measure neve szögletes zárójelek közé van zárva. Bizonyos környezetekben mindig szükség van egy teljesen kvalifikált névre.
Nem minősített oszlopnév [Összeg] A minősítés nélküli név csak az oszlop neve, szögletes zárójelben. Azok a környezetek, ahol a nem minősített nevet használhatja, magukban foglalják a képletek használatát egy számított oszlopban ugyanabban a táblában, valamint a or használatát egy összesítési függvényben, amely ugyanazon a táblázaton végez elemzést.
Teljesen kijelölt oszlop a szóközökkel rendelkező táblában „Kanadai értékesítés”[Db] A tábla neve tartalmaz szóközöket, így 'contains' idézőjelbe kell tenni.

Egyéb korlátozások

Az egyes függvényekhez szükséges szintaxis, and a végrehajtandó művelet típusa, a függvénytől függően nagyban változik. Általában azonban a következő szabályok vonatkoznak all képletekre and kifejezésekre:

  • DAX képletek and kifejezések nem módosíthatók, or egyéni values beszúrása a táblákba.

  • Számított sorok nem hozhatók létre DAXhasználatával. Csak számított oszlopokat and mértékeket hozhat létre.

  • Számított oszlopok definiálásakor a függvényeket bármilyen szintre beágyazhatja.

  • DAX több függvényt is tartalmaz, amelyek táblát adnak vissza. A függvények által visszaadott values-t általában más függvények bemeneteként használják, amelyek bemenetként táblázatot igényelnek.

DAX operátorok and állandók

Az alábbi táblázat a DAXáltal támogatott operátorokat sorolja fel. Az egyes operátorok szintaxisáról további információt az DAX operátorokcímű témakörben talál.

Operátor típusa Szimbólum and használata
Zárójel operátor () precedencia sorrend and argumentumok csoportosítása
Számtani operátorok + (hozzáadás)

- (kivonás)

* (szorzás)

/ (osztás)

^ (exponenciális)
Összehasonlító operátorok = (egyenlő)

> (nagyobb, mint)

< (kisebb, mint)

>= (nagyobb, mint or egyenlő)

<= (kisebb, mint or egyenlő)

<> (not egyenlő)
Szövegösszefűzési operátor & (összefűzés)
Logikai operátorok && (and)

|| (or)

adattípusok

Önnek not kell leadnia, convert, or máskülönben meg kell adnia egy DAX képletben használt oszlop orvalue adattípusát. Ha adatokat használ egy DAX képletben, DAX automatikusan azonosítja az adattípusokat a beírt valuesand hivatkozott oszlopaiban, and implicit konverziókat hajt végre, ha szükséges a megadott művelet végrehajtásához.

Például if megpróbál számokat hozzáadni egy datevalue, a motor a függvény kontextusában értelmezi a műveletet, andconvert a számokat egy közös adattípusra, and majd megjeleníti az eredményt a kívánt format, egy date.

Azonban a values-ra bizonyos korlátozások vonatkoznak, amelyek sikeresen konvertálhatók. If egy oszlop valueor olyan adattípussal rendelkezik, amely nem kompatibilis az aktuális művelettel, DAX egy errorad vissza. Emellett DAXnot olyan függvényeket is biztosít, amelyek lehetővé teszik, hogy explicit módon módosítsa, convert, or az adatmodellbe importált meglévő adatok adattípusát.

Fontos

DAX támogatja not a variáns adattípus használatát. Ezáltal, amikor a or import adatokat betölti egy adatmodellbe, az adatok az egyes oszlopokban általában egységes adattípusúak.

Egyes függvények skaláris valuesad vissza, beleértve a sztringeket is, míg más függvények számokkal működnek, mindkét egész szám and valós számokat, or dátumokat and alkalommal. Az egyes függvényekhez szükséges adattípust a szakasz ismerteti, DAX függvények.

A függvény argumentumaként több oszlopot and több adatsort tartalmazó táblákat is használhat. Egyes függvények a memóriában tárolt táblákat is visszaadják, and más függvények argumentumaként is használhatók.

Date and time

DAX a Microsoft SQL Server által használt datetime adattípussal tárolja a dateandtimevalues. A Datetime format egy lebegőpontos számot használ, ahol Datevalues az 1899. december 30-a óta eltelt napok számát képviselő egész számnak felel meg. Time values egy datevalue tizedes törtrészének felel meg, ahol az Órák, percek és and másodpercek egy daytizedes törtrészei. DAX date and time függvények implicit módon konvertálják a convert argumentumokat a datetime adattípusra.

Jegyzet

A DAX által támogatott maximális exact DateTime value 9999. december 31. 00:00:00.

Date and time literál

A Power BI Desktop 2021. augusztusi verziójától kezdve a DAXdateand datetime values konstansként megadható a formatdt"YYYY-MM-DD", dt"YYYY-MM-DDThh:mm:ss", ordt"YYYY-MM-DD hh:mm:ss". Ha literálként van megadva, akkor a DATE, TIME, DATEVALUE, TIMEVALUE függvények használata not szükséges.

Az alábbi kifejezés például DATEandTIME függvényeket használ az OrderDate filter:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > (DATE(2015,1,9) + TIME(2,30,0)) &&[OrderDate] < (DATE(2015,12,31) + TIME(11,59,59))
)

Ugyanez a filter kifejezés konstansként is megadható:

EVALUATE
FILTER (
        FactInternetSales,
        [OrderDate] > dt"2015-1-9T02:30:00" && [OrderDate] < dt"2015-12-31T11:59:59"
)

Jegyzet

A DAXdateand dátum/idő típusú literális formatnot támogatott allPower BI Desktop, Analysis Services és andPower Pivot excelbeli verzióiban. Az új and frissített DAX funkciók általában first jelennek meg Power BI Desktop and, majd később az Analysis Services andPower Kimutatás az Excelben.