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


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 vizualizációk jelennek meg egy jelentésben, vagy egy táblához hozzáadott mezőt, és ezek a DAX lekérdezések a szűrő alkalmazásakor módosulnak. A Power BI Desktop teljesítményelemzője megjelenítheti ezeket a DAX lekérdezéseket, és akár DAX Power BI Desktop lekérdezési nézetében is futtathatja őket.

A Power BI Desktopban a DAX lekérdezésnézet használatával, vagy a Power BI szolgáltatásban a DAX lekérdezések írásával létrehozhatja és futtathatja saját DAX lekérdezéseit. A Microsoft Fabric segítségével tovább növelheti a termelékenységet a Copilot által írt DAX lekérdezésekkel az DAX asztali vagy webes lekérdezési nézetben. A Power BI-eszközök mellett DAX lekérdezések futtathatók a Fabric-jegyzetfüzetekben a szemantikai hivatkozás segítségével, hogy Python segítségével adatokat olvassanak be szemantikai modellekből, valamint a Lekérdezések végrehajtása REST APIis használható, amely szintén elérhető a Power Automaterendszerben. Más eszközök, például SQL Server Management Studio (SSMS), Power BI Jelentéskészítőés nyílt forráskódú eszközök, például DAX Studio, DAX lekérdezések létrehozását és futtatását is lehetővé teszik.

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 mértékekben, vagy egyszerűen megtekintheti az adatokat a szemantikai modellben. INFORMÁCIÓ és INFO.VIEW DAX függvények információkat is kaphatnak a szemantikus modellről, mint például táblák, oszlopok, mértékek és még sok más.

A lekérdezések megismerése előtt fontos, hogy tisztában legyen DAX alapismeretekkel. Ha még nem tette meg, mindenképpen tekintse meg DAX áttekintést.

Kulcsszavak

DAX lekérdezések egy egyszerű szintaxist tartalmaznak, amely csak egy kötelező kulcsszóból áll, EVALUATE. EVALUATE egy táblakifejezés, például egy DAX függvény vagy táblanév követi, amely a futtatáskor eredménytáblát ad ki. Az eredménytáblázatot kimeneti táblakifejezések a következők:

  1. A táblát kimenetként használó gyakori DAX függvények, például SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLEés sok más, EVALUATE dolgoznak az eredménytáblák kimenete érdekében.
  2. A modellben lévő táblák, ha név szerint hivatkoznak rájuk, a EVALUATE segítségével egy eredménytáblát hoznak létre, amely a táblában lévő adatokat mutatja. Például EVALUATE táblanév futtatható DAX lekérdezésként.
  3. A modellben lévő mértékek vagy DAX képletek, amelyek skaláris értéket adnak vissza, EVALUATE segítségével eredménytáblaként jeleníthetők meg, ha kapcsos zárójelek közé vannak zárva. A(z) {[Total Sales]} EVALUATE vagy EVALUATE {COUNTROWS('Sales')} például DAX lekérdezésként futtatható. Ezeket táblakonstruktoroknaknevezik.

A DAX lekérdezésekre számos választható kulcsszó vonatkozik: ORDER BY, START AT, DEFINE, MEASURE, VAR, TÁBLÁZAT és OSZLOP.

EVALUATE (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ás szükséges, de a lekérdezések tetszőleges számú EVALUATE utasítást tartalmazhatnak.

EVALUATE szintaxis

EVALUATE <table>

EVALUATE paraméterek

Kifejezés Definíció
table Tábla kifejezés.

EVALUATE példa

EVALUATE
	'Sales Order'

Eredménytáblaként visszaadja a Sales Order tábla összes sorát és oszlopát. Ez TOPN vagy FILTERhasználatával korlátozható, és ORDER BYszerint rendezhető.

Képernyőkép arról, hogyan használható EVALUATE egy DAX lekérdezéshez a Power BI Desktop DAX lekérdezési nézetében.

ORDER BY (nem kötelező)

Az opcionális ORDER BY kulcsszó egy vagy több oszlopot határoz meg a lekérdezésben vagy a lekérdezési eredmények rendezéséhez használt kifejezésekben. Az eredmény minden sorához kiértékelhető kifejezés érvényes. A lekérdezés bármely oszlopa érvényes is.

A szemantikai modellek oszlop szerinti rendezési tulajdonsága nem vonatkozik DAX lekérdezési eredményekre. Ha egy oszlopot egy másik oszlop szerint kell rendezni a modellben, például a Hónap neve esetén, akkor a rendezés oszlop szerint is szerepelnie kell a DAXhasználni kívánt ORDER BY lekérdezésben.

ORDER BY szintaxis

EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]

ORDER BY paraméterek

Kifejezés Definíció
expression Bármely DAX kifejezés, amely egyetlen skaláris értéket vagy oszlopot ad vissza a DAX lekérdezésben.
ASC (alapértelmezett) Növekvő rendezési sorrend.
DESC Csökkenő rendezési sorrend.

ORDER BY példa

EVALUATE
	SUMMARIZECOLUMNS(
		// Group by columns
		'Date'[Month Name],
		'Date'[Month of Year],
		'Product'[Category],

		// Optional filters
		FILTER(
			VALUES('Product'[Category]),
			[Category] = "Clothing"
		),

		// Measures or explicit DAX formulas to aggregate and analyze the data by row
		"Orders", [Orders],
		"Avg Profit per Order", DIVIDE(
			[Total Sales Profit],
			[Orders]
		)
	)

	// DAX queries do not use sort order defined in Power BI, 
	// sort by columns must be included in the DAX query to be used in order by
	ORDER BY 'Date'[Month of Year] ASC

A ruházati rendeléseket és az átlagos nyereséget adja eredménytáblázatként, havonta növekvő sorrendben.

Képernyőkép arról, hogyan használható ORDER BY egy DAX lekérdezéshez a Power BI Desktop DAX lekérdezési nézetében.

TOPN nem a megadott rendezési sorrend alapján választja ki a visszaadandó sorok számát a ORDER BYesetén. Ehelyett TOPN saját szintaxissal rendelkezik ahhoz, hogy opcionálisan megadja a rendezést, mielőtt az első 100 sor visszaadásra kerül. ORDER BY csak a TOPNáltal visszaadott eredménytáblát rendezi.

EVALUATE
	TOPN(
		100,
		'Sales Order',
		// The way the data is sorted before the top 100 rows are selected
		'Sales Order'[SalesOrderLineKey], ASC
	)
	// The way the data is sorted for the results
	ORDER BY
		'Sales Order'[Sales Order] ASC,
		'Sales Order'[Sales Order Line] ASC

Az első 100 értékesítési rendelést a SalesOrderLienKey szerint növekvő sorrendben adja vissza, majd az eredményeket először értékesítési rendelés, majd értékesítési rendeléssor szerint rendezi.

Képernyőkép arról, hogyan használható TOPN és ORDER BY egy DAX lekérdezéshez a Power BI Desktop DAX lekérdezési nézetében.

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

Kifejezés Definíció
value Állandó érték. Nem lehet kifejezés.
parameter Paraméter neve egy XMLA-utasításban a @ karakterrel előtagolt.

START AT megjegyzések

A START AT argumentumok egy-az-egyhez megfelelőséget mutatnak a ORDER BY záradék oszlopaival. A START AT záradékban annyi argumentum lehet, mint a ORDER BY záradékban, de nem több. A START AT első argumentuma a ORDER BY oszlop 1. oszlopában határozza meg a kezdőértéket. A START AT második argumentuma a ORDER BY oszlop 2. oszlopában határozza meg a kezdőértéket az 1. oszlop első értékének megfelelő sorokban.

START AT példa

EVALUATE
	'Sales Order'
	ORDER BY 'Sales Order'[Sales Order] ASC
	// Start at this order, orders before this order will not be displayed
	START AT "SO43661"

A Sales Order (Értékesítési rendelés) tábla összes oszlopát adja vissza növekvő sorrendben a Sales Order (Értékesítési rendelés) szerint, SO43661 kezdettől kezdve. Az értékesítési rendelés előtti sorok nem szerepelnek az eredménytáblában.

Képernyőkép arról, hogyan használható ORDER BY és START AT egy DAX lekérdezéshez a Power BI Desktop DAX lekérdezési nézetében.

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 EVALUATEellentétben csak egy DEFINE blokk lehet egy vagy több definícióval egy DAX lekérdezésben. DEFINE az első EVALUATE utasítás előtt kell lennie, és a lekérdezésben szereplő összes EVALUATE utasításra érvényesnek kell lennie. A definíciók lehetnek változók, mértékek, táblák1és oszlop1. 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 van szükség, ha a DEFINE kulcsszó szerepel egy lekérdezésben.

DEFINE MEASURE gyakori forgatókönyv az új mértékek létrehozására vagy a meglévő mértékek szemantikai modellben való szerkesztésére. Ha a mérték már létezik a modellben, a DAX lekérdezés a lekérdezésben definiált mérték DAX képletet fogja használni. Ez akkor hasznos, ha a modell frissítése előtt DAX lekérdezéssel teszteli a mértékeket.

A DEFINE MEASURE is hasznos lehet további elemzések készítéséhez DAX képletekkel egy adott DAX lekérdezés esetén, amikor előfordulhat, hogy nincs engedélye modellmérték hozzáadására, vagy nincs szükség rá a modellben.

DEFINE szintaxis

[DEFINE 
    (
     (MEASURE <table name>[<measure name>] = <scalar expression>) | 
     (VAR <var name> = <table or scalar expression>) |
     (TABLE <table name> = <virtual table definition>) | 
     (COLUMN <table name>[<column name>] = <scalar expression>) | 
    ) + 
]

(EVALUATE <table expression>) +

DEFINE paraméterek

Kifejezés Definíció
Entity MEASURE, VAR, TÁBLA1vagy OSZLOP1.
name 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.
expression 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 foglaljuk kapcsos zárójelek közé egy táblakonstruktorral {}, vagy használjuk a ROW() függvényt, hogy egyetlen sortáblát kapjunk.

[1]Figyelem: 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

  • Egy DAX lekérdezés több EVALUATE utasítással is rendelkezhet, de csak egy DEFINE utasítással rendelkezhet. A DEFINE utasítás definíciói a lekérdezés bármely EVALUATE utasítására alkalmazhatók.

  • Egy DEFINE utasításban legalább egy definíció szükséges.

  • A lekérdezésben megadott mértékdefiníciók felülírják a modell azonos nevű mértékeit, de csak a lekérdezésen belül használatosak. Ezek nem befolyásolják a modellmértékeket.

  • VAR nevekre egyedi korlátozások vonatkoznak. További információ: VAR – Paraméterek.

DEFINE példa

DEFINE
	VAR _firstyear = MIN('Date'[Fiscal Year])
	VAR _lastyear = MAX('Date'[Fiscal Year])
	TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
	COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
	MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
	
EVALUATE
	'Unbought products'
	
EVALUATE
	{[Unbought products]}

A DAX lekérdezésben definiált táblát adja vissza, amely egy további definiált oszlopban megadott változókra hivatkozó, nem feldolgozott termékeket jelenít meg. Egy mérték van definiálva és kiértékelve arra, hogy megszámolja a meg nem vásárolt termékek sorait.

Képernyőkép arról, hogyan használható DEFINE egy DAX lekérdezéshez a Power BI Desktop DAX lekérdezési nézetében.

DEFINE
	MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
	MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
			COUNTROWS(Customer),
			FILTER(
				'Sales',
				[Orders] > 0
			)
		)
	MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
			[Orders],
			[Customers],
			0
		)

EVALUATE
	SUMMARIZECOLUMNS(
		'Date'[Fiscal Year],
		"Orders", [Orders],
		"Customers", [Customers],
		"Orders per Customer", [Orders per Customer]
	)

Egy táblát ad vissza, amely három meghatározott mértéket értékel ki az eredmények pénzügyi év szerinti megjelenítéséhez. A modellben minden mérték is létezik, és a rendelések ügyfélenként módosulnak a DAX lekérdezésben.

Képernyőkép arról, hogyan használható DEFINEMEASURE egy DAX lekérdezéshez a Power BI Desktop DAX lekérdezési nézetében.

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 Végrehajtási módszer (XMLA) metódus egy Paraméterelem (XMLA) gyűjteményelemsel rendelkezik, 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) elem határozza meg a paraméter nevét és egy értéket.

Hivatkozzon XMLA-paraméterekre a paraméter nevének előtagjának @ karakterrel történő 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 meghatározott és a <STATEMENT> elemben nem használt paraméterek hibaválaszt hoznak létre az XMLA-ban. A <Parameters> elemben használt és nem definiált paraméterek hibaválaszt hoznak létre az XMLA-ban.

DAX kijelentésekSUMMARIZECOLUMNS