DAX-lekérdezések
Az olyan jelentéskészítő ügyfelek, mint a Power BI és az Excel, DAX-lekérdezéseket hajtanak végre, amikor egy mező egy jelentésre kerül, vagy amikor szűrőt alkalmaz. Az SQL Server Management Studio (SSMS), a Power BI Jelentéskészítő és a nyílt forráskódú eszközök, például a DAX Studio használatával létrehozhatja és futtathatja saját DAX-lekérdezéseit. A DAX-lekérdezések közvetlenül az eszköz táblázataként adnak vissza eredményeket, így gyorsan létrehozhatja és tesztelheti a DAX-képletek teljesítményét.
A lekérdezések megismerése előtt fontos, hogy tisztában legyen a DAX alapjaival. Ha még nem tette meg, mindenképpen ellenőrizze a DAX áttekintését.
Kulcsszavak
A DAX-lekérdezések egy egyszerű szintaxissal rendelkeznek, amely csak egy kötelező kulcsszóból, a KIÉRTÉKELÉSből és számos választható kulcsszóból áll: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE és COLUMN. Minden kulcsszó meghatároz egy utasítást, amelyet a lekérdezés időtartamára használnak.
KIÉRTÉKELÉS (kötelező)
A legalapvetőbb szinten a DAX-lekérdezés egy táblakifejezést tartalmazó EVALUATE utasítás. Legalább egy EVALUATE utasításra van szükség, azonban a lekérdezések tetszőleges számú EVALUATE utasítást tartalmazhatnak.
KIÉRTÉKELÉS szintaxisa
EVALUATE <table>
KIÉRTÉKELŐ paraméterek
Időszak | Definíció |
---|---|
table | Táblakifejezés. |
PÉLDA KIÉRTÉKELÉSE
EVALUATE
'Internet Sales'
Az Internet Sales tábla összes sorát és oszlopát táblaként adja vissza.
ORDER BY (nem kötelező)
Az opcionális ORDER BY kulcsszó egy vagy több kifejezést határoz meg a lekérdezési eredmények rendezéséhez. Az eredmény minden sorához kiértékelhető kifejezés érvényes.
ORDER BY Szintaxis
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]
ORDER BY Parameters
Időszak | Definíció |
---|---|
kifejezés | Bármely DAX-kifejezés, amely egyetlen skaláris értéket ad vissza. |
ASC | (alapértelmezett) Növekvő rendezési sorrend. |
DESC | Csökkenő rendezési sorrend. |
ORDER BY Example
EVALUATE
'Internet Sales'
ORDER BY
'Internet Sales'[Order Date]
Az Internet Sales tábla összes sorát és oszlopát adja vissza növekvő sorrendben rendelési dátum szerint táblázatként.
START AT (nem kötelező)
Az opcionális START AT kulcsszót egy ORDER BY záradékban használja a rendszer. Meghatározza azt az értéket, amelyben a lekérdezési eredmények kezdődnek.
START AT Szintaxis
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
START AT paraméterek
Időszak | Definíció |
---|---|
Érték | Állandó érték. Nem lehet kifejezés. |
paraméter | Egy karakterrel előtagú @ XMLA-utasításban szereplő paraméter neve. |
START AT Megjegyzések
A START AT argumentumok egy-az-egyhez egyezést tartalmaznak az ORDER BY záradék oszlopaival. A START AT záradékban annyi argumentum lehet, mint az ORDER BY záradékban, de nem több. A START AT első argumentuma az ORDER BY oszlopok 1. oszlopában határozza meg a kezdőértéket. A START AT második argumentuma az ORDER BY oszlopok 2. oszlopában határozza meg a kezdőértéket az 1. oszlop első értékének megfelelő sorokban.
START AT példa
EVALUATE
'Internet Sales'
ORDER BY
'Internet Sales'[Sales Order Number]
START AT "SO7000"
Az Internet Sales tábla összes sorát és oszlopát adja vissza növekvő sorrendben az Értékesítési rendelés száma szerint, SO7000-től kezdődően.
DEFINE (nem kötelező)
Az opcionális DEFINE kulcsszó egy vagy több számított entitásdefiníciót vezet be, amelyek csak a lekérdezés időtartamára léteznek. A definíciók megelőzik a EVALUATE utasítást, és érvényesek a lekérdezés összes EVALUATE utasítására. A definíciók lehetnek változók, mértékek, 1. táblázatés 1. oszlop. A definíciók hivatkozhatnak az aktuális definíció előtt vagy után megjelenő egyéb definíciókra. Legalább egy definícióra szükség van, ha a DEFINE kulcsszó szerepel egy lekérdezésben.
DEFINÍCIÓ szintaxisa
[DEFINE
(
(MEASURE <table name>[<measure name>] = <scalar expression>) |
(VAR <var name> = <table or scalar expression>) |
(TABLE <table name> = <table expression>) |
(COLUMN <table name>[<column name>] = <scalar expression>) |
) +
]
(EVALUATE <table expression>) +
DEFINE-paraméterek
Időszak | Definíció |
---|---|
Entitás | MÉRTÉK, VAR, 1. TÁBLÁZATVAGY OSZLOP1. |
név | Mérték, var, tábla vagy oszlopdefiníció neve. Nem lehet kifejezés. A névnek nem kell egyedinek lennie. A név csak a lekérdezés időtartamára létezik. |
kifejezés | Bármely DAX-kifejezés, amely táblát vagy skaláris értéket ad vissza. A kifejezés a definiált entitások bármelyikét használhatja. Ha skaláris kifejezést kell táblázatkifejezéssé alakítani, akkor a kifejezést kapcsos zárójelekkel {} burkolja egy táblakonstruktorba, vagy használja a ROW() függvényt egyetlen sortábla visszaadásához. |
[1] Figyelem: A lekérdezési hatókörű TABLE és COLUMN definíciók csak belső használatra szolgálnak. Bár szintaxishiba nélkül is definiálhat TABLE és COLUMN kifejezéseket egy lekérdezéshez, futásidejű hibákat okozhat, ezért nem ajánlott.
DEFINE megjegyzések
A DAX-lekérdezések több EVALUATE utasítással is rendelkezhetnek, de csak egy DEFINE utasítással rendelkezhetnek. A DEFINE utasítás definíciói a lekérdezés bármely KIÉRTÉKELő utasítására alkalmazhatók.
A DEFINE utasításban legalább egy definíció szükséges.
A lekérdezés felülbírálási modell azonos nevű mértékeinek mértékdefiníciói, de csak a lekérdezésen belül használatosak. Ezek nem befolyásolják a modellmértékeket.
A VAR-nevek egyedi korlátozásokkal rendelkeznek. További információ: VAR – Paraméterek.
PÉLDA DEFINIÁLÁSA
DEFINE
MEASURE 'Internet Sales'[Internet Total Sales] =
SUM ( 'Internet Sales'[Sales Amount] )
EVALUATE
SUMMARIZECOLUMNS (
'Date'[Calendar Year],
TREATAS (
{
2013,
2014
},
'Date'[Calendar Year]
),
"Total Sales", [Internet Total Sales],
"Combined Years Total Sales",
CALCULATE (
[Internet Total Sales],
ALLSELECTED ( 'Date'[Calendar Year] )
)
)
ORDER BY [Calendar Year]
A 2013-as és 2014-ben számított teljes értékesítést adja eredményül, a 2013-as és 2014-as évek összesített összesített értékesítéseit pedig táblaként. A DEFINE utasításban szereplő mérték, az Internetes összes értékesítés, a Total Sales és a Combined Years Total Sales kifejezésben egyaránt használatos.
Paraméterek DAX-lekérdezésekben
Egy jól definiált DAX-lekérdezési utasítás paraméterezhető, majd újra és újra használható a paraméterértékek csak módosításával.
Az Execute Method (XMLA) metódus rendelkezik egy Paraméterelem (XMLA) gyűjteményelemmel, amely lehetővé teszi a paraméterek meghatározását és egy érték hozzárendelését. A gyűjteményen belül minden paraméterelem (XMLA) meghatározza a paraméter nevét és egy értékét.
Hivatkozzon XMLA-paraméterekre a paraméter nevének egy karakterrel való előtagolásával @
. A szintaxis azon helye, ahol egy érték engedélyezett, az érték lecserélhető paraméterhívásra. Minden XMLA-paraméter szövegként van begépelve.
Fontos
A paraméterek szakaszban definiált és az UTASÍTÁS> elemben nem használt paraméterek hibaválaszt hoznak létre az <XMLA-ban. A Paraméterek elemben <használt és nem definiált paraméterek> hibaválaszt hoznak létre az XMLA-ban.