Delen via


DAX queries

Rapportageclients zoals Power BI and Excel voeren DAX query's uit wanneer visuals in een rapport worden weergegeven, or een veld dat aan een tabel is toegevoegd, and deze DAX query's worden aangepast wanneer een filter wordt toegepast. In de Performance Analyzer- in Power BI Desktop kunt u deze DAX query's weergeven andeven deze uitvoeren in de DAX queryweergave.

Met behulp van DAX queryweergave in Power BI Desktop orkunt uDAX-query's schrijven in de Power BI-dienst en vervolgens and uw eigen DAX-query's maken en uitvoeren. Met Microsoft Fabrickunt u uw productiviteit verder verhogen met Copilot om DAX query's te schrijven in de DAX weergave van de Desktop Web or. Naast Power BI-hulpprogramma's kunnen DAX query's worden uitgevoerd in Fabric-notebooks met behulp van semantische koppeling om gegevens uit semantische modellen met Python te lezen, and met de REST API-query's uitvoeren, ook beschikbaar in Power Automate. Andere hulpprogramma's, zoals SQL Server Management Studio (SSMS), Power BI Report Builder, and opensource-hulpprogramma's zoals DAX Studio, kunt u ook andDAX query's maken.

DAX query's resultaten retourneren als een tabel right in het hulpprogramma, zodat u snel and de prestaties van uw DAX formules in metingen kunt testen or eenvoudig de gegevens in uw semantisch model weer te geven. INFO and INFO.VIEW DAX functies kunnen ook informatie krijgen over uw semantische model, zoals een lijst met tabellen, kolommen, metrieken, and nog veel meer.

Voordat u meer leert over query's, is het belangrijk dat u een goed begrip hebt van DAX basisprincipes. If u dat nog niet hebt gedaan, moet u DAX overzicht bekijken.

Zoekwoorden

DAX query's een eenvoudige syntaxis hebben die bestaat uit slechts één vereist trefwoord, EVALUATE. EVALUATE wordt gevolgd door een tabelexpressie, zoals een DAX-functie or tabelnaam, die bij het uitvoeren een resultaattabel uitvoert. Tabelexpressies die een resultaattabel uitvoeren, zijn onder andere:

  1. Algemene DAX functies die een tabel uitvoeren, zoals SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, and vele andere, werken met EVALUATE om een resultaattabel uit te voeren.
  2. Tabellen in het model waarnaar wordt verwezen op naam, werken met EVALUATE om een resultaattabel met de gegevens in de tabel uit te voeren. EVALUATE tabelnaam kan bijvoorbeeld worden uitgevoerd als een DAX-query.
  3. Metingen in het model or iedere DAX-formule, die een scalaire valueretourneert, werken samen met EVALUATE om de value te tonen als een resultaattabel als deze tussen accolades staat. EVALUATE bijvoorbeeld {[Totale verkoop]}orEVALUATE {COUNTROWS('Verkoop')} kan worden uitgevoerd als een DAX-query. Deze worden tabelconstructorsgenoemd.

Er zijn verschillende optionele trefwoorden die specifiek zijn voor DAX query's: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE, and COLUMN.

EVALUATE (vereist)

Op het meest eenvoudige niveau is een DAX-query een EVALUATE instructie met een tabelexpressie. Ten minste één EVALUATE instructie is vereist, maar een query kan een willekeurig aantal EVALUATEstatementsbevatten.

EVALUATE syntaxis

EVALUATE <table>

Parameters voor EVALUATE

Term Definitie
table Een tabelexpressie.

EVALUATE voorbeeld

EVALUATE
	'Sales Order'

Retourneert all rijen and kolommen uit de tabel Verkooporder, als een resultaatstabel. Dit kan worden beperkt met het gebruik van TOPNorFILTER, and gesorteerd met ORDER BY.

Schermopname van het gebruik van EVALUATE voor een DAX-query in DAX query-venster van Power BI Desktop.

ORDER BY (optioneel)

Het optionele ORDER BY trefwoord definieert een extra or kolom in de or expressies die worden gebruikt om de resultaten van de query te sorteren. Elke expressie die voor elke rij van het resultaat kan worden geëvalueerd, is geldig. Elke kolom in de query zelf is ook geldig.

Sorteren volgens kolomeigenschap in semantische modellen zijn not van toepassing op de DAX-queryresultaten. If een kolom moet aan de hand van een andere kolom in het model worden gesorteerd, zoals in het geval van Month Naam moet ook de kolom waarmee wordt gesorteerd worden opgenomen in de DAX query die moet worden gebruikt in de ORDER BY.

ORDER BY syntaxis

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

parameters voor ORDER BY

Term Definitie
expression Elke DAX-expressie die één scalaire valueretourneert, or kolom die is opgenomen in de DAX-query.
ASC (standaard) Oplopende sorteervolgorde.
DESC Aflopende sorteervolgorde.

ORDER BY voorbeeld

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

Retourneert kledingorders andaverage winst per order door month, in oplopende volgorde door month, als een resultaattabel.

Schermopname van het gebruik van ORDER BY voor een DAX-query in DAX queryweergave van Power BI Desktop.

TOPN kiest not het opgegeven aantal rijen dat moet worden geretourneerd op basis van de sorteervolgorde die is opgegeven in ORDER BY. In plaats daarvan heeft TOPN een eigen syntaxis om desgewenst een sortering op te geven voordat de bovenste 100 rijen worden geretourneerd. ORDER BY sorteert alleen de resultaattabel die wordt geretourneerd door TOPN.

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

Retourneert de top 100 verkooporders gesorteerd op SalesOrderLienKey oplopend en sorteert vervolgens de resultaten first op verkooporder en vervolgens op verkooporderregel.

Schermopname waarin wordt getoond hoe u TOPNandORDER BY gebruikt voor een DAX query in DAX queryweergave van Power BI Desktop.

START AT (optioneel)

Het optionele START AT trefwoord wordt gebruikt in een ORDER BY-clause. Hiermee definieert u de value waarop de queryresultaten beginnen.

START AT syntaxis

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

parameters voor START AT

Term Definitie
value Een constante value. Kan geen expressie zijn.
parameter De naam van een parameter in een XMLA-instructie voorafgegaan door een @ teken.

START AT opmerkingen

START AT argumenten hebben een een-op-een-correspondentie met de kolommen in de ORDER BY clausule. Er kunnen zoveel argumenten in de START AT-component zijn als in de ORDER BY-component, maar not meer. Het argument first in de START AT definieert het begin value in kolom 1 van de ORDER BY kolommen. Het argument second in de START AT definieert het begin value in kolom 2 van de ORDER BY kolommen in de rijen die voldoen aan de firstvalue voor kolom 1.

START AT voorbeeld

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"

Retourneert all kolommen uit de verkoopordertabel, in oplopende volgorde van verkooporders, beginnend bij verkooporder SO43661. Rijen voor deze verkooporder worden not opgenomen in de resultatentabel.

Schermopname waarin wordt getoond hoe u ORDER BYandSTART AT gebruikt voor een DAX query in DAX queryweergave van Power BI Desktop.

DEFINE (optioneel)

Het optionele trefwoord DEFINE introduceert één or meer berekende entiteitsdefinities die alleen bestaan voor de duration van de query. In tegenstelling tot EVALUATEkan er slechts één DEFINE blok zijn met één or meer definities in een DAX query. DEFINE moet voorafgaan aan de firstEVALUATE instructie and geldig zijn voor allEVALUATEstatements in de query. Definities kunnen variabelen, metingen, tabellen1zijn, and kolommen1. Definities kunnen verwijzen naar andere definities die vóór or na de huidige definitie worden weergegeven. Er is ten minste één definitie vereist if het trefwoord DEFINE is opgenomen in een query.

DEFINE MEASURE is een veelvoorkomend scenario voor het bouwen van nieuwe metingen or bestaande metingen bewerken in een semantisch model. Wanneer de measure al bestaat in het model, gebruikt de DAX-query de measureDAX formule die in de query is gedefinieerd. Dit is handig voor het testen van metingen met een DAX-query voordat u het model bijwerkt.

DEFINE MEASURE is ook handig om aanvullende analyse te maken met DAX formules voor een specifieke DAX-query, waar u mogelijk not gemachtigd bent om een model toe te voegen measureor het not nodig is om het in het model te hebben.

DEFINE syntaxis

[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>) +

parameters voor DEFINE

Term Definitie
Entity MEASURE, VAR, TABLE1, or COLUMN1.
name De naam van een measure-, var-tabel, or-kolomdefinitie. Het kan geen expressie zijn. De naam moet not uniek zijn. De naam bestaat alleen voor de duration van de query.
expression Elke DAX-expressie die een tabel retourneert or scalaire value. De expressie kan een van de gedefinieerde entiteiten gebruiken. If moet u een scalaire expressie omzetten in een tabelexpressie convert, pakt u de expressie in een tabelconstructor met accolades {}, or gebruikt u de functie ROW() om een tabel met één rij te retourneren.

[1]Waarschuwing: querytabel and KOLOMdefinities zijn alleen bedoeld voor intern gebruik. Hoewel u define TABLE and COLUMN-expressies voor een query kunt errorzonder syntaxis error, kunnen deze runtimefouten opleveren and worden not aanbevolen.

DEFINE opmerkingen

  • Een DAX-query kan meerdere EVALUATEstatementsbevatten, maar slechts één DEFINE-instructie bevatten. Definities in de instructie DEFINE kunnen van toepassing zijn op elke EVALUATEstatements in de query.

  • Er is ten minste één definitie vereist in een DEFINE instructie.

  • Measure definities voor een query overschrijven modelmetingen van dezelfde naam, maar worden alleen in de query gebruikt. Ze zullen not invloed hebben op het model measure.

  • VAR namen hebben unieke beperkingen. Zie VAR - Parametersvoor meer informatie.

DEFINE Voorbeeld

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]}

Retourneert de tabel die is gedefinieerd in de DAX-query om niet-gekochte producten weer te geven met een extra gedefinieerde kolom die verwijst naar specifieke variabelen. Een measure wordt ook gedefinieerd en and geëvalueerd om de rijen met niet-gekochte producten te count.

Schermafbeelding van hoe je DEFINE gebruikt voor een DAX-query in de DAX-queryweergave van Power BI Desktop.

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]
	)

Retourneert een tabel die drie gedefinieerde metingen evalueert om de resultaten per fiscaal yearweer te geven. All metingen zijn ook aanwezig in het model, en and Orders per klant wordt gewijzigd in de DAX-query.

Schermopname waarin wordt getoond hoe u DEFINEMEASURE gebruikt voor een DAX query in DAX queryweergave van Power BI Desktop.

Parameters in DAX query's

Een goed gedefinieerde DAX query-instructie kan worden geparameteriseerd and vervolgens gebruikt over and met alleen wijzigingen in de parameter values.

De methode Execute Method (XMLA) heeft een XMLA-element (Parameters Element) verzamelingselement waarmee parameters kunnen worden gedefinieerd een toegewezen. In de verzameling definieert elk XMLA-element (Parameter Element) de naam van de parameter and een value.

Verwijs naar XMLA-parameters door de naam van de parameter vooraf te laten gaan met een @ teken. Elke plaats in de syntaxis waarin een value is toegestaan, kan de value worden vervangen door een parameteroproep. All XMLA-parameters worden getypt als tekst.

Belangrijk

Parameters die in de parameterssectie andnot zijn gedefinieerd, gebruikt in het element <STATEMENT>generate een error-antwoord in XMLA. Parameters die zijn gebruikt andnot gedefinieerd in het <Parameters>-element generate een error-antwoord in XMLA.

DAX statements SUMMARIZECOLUMNS