Lezen in het Engels

Delen via


DAX-queries

Rapportageclients zoals Power BI en Excel voeren DAX-query's uit wanneer visuals worden weergegeven in een rapport of een veld dat is toegevoegd aan een tabel, en deze DAX-query's worden aangepast wanneer een filter wordt toegepast. De performance analyzer in Power BI Desktop kan u deze DAX-query's laten zien en ze zelfs uitvoeren in de DAX-queryweergave.

Met behulp van DAX-queryweergave in Power BI Desktop of DAX-query's schrijven in de Power BI-service, kunt u 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-queryweergave van de desktop of het web. Naast Power BI-hulpprogramma's kunnen DAX-query's worden uitgevoerd in Fabric-notebooks met semantische koppeling om gegevens te lezen uit semantische modellen met Python, en via de Execute Queries REST API, die ook beschikbaar is in Power Automate. Met andere hulpprogramma's zoals SQL Server Management Studio (SSMS), Power BI Report Builderen opensource-hulpprogramma's zoals DAX Studio, kunt u ook DAX-query's maken en uitvoeren.

DAX-query's retourneren resultaten als een tabel rechtstreeks in het hulpprogramma, zodat u snel de prestaties van uw DAX-formules in metingen kunt maken en testen of gewoon de gegevens in uw semantische model kunt bekijken. INFO en INFO. VIEW DAX-functies kunnen ook informatie krijgen over uw semantische model, zoals een lijst met tabellen, kolommen, metingen en nog veel meer.

Voordat u meer leert over query's, is het belangrijk dat u een goed begrip hebt van de basisprincipes van DAX. Zorg ervoor dat je DAX-overzichtbekijkt, als je dat nog niet hebt gedaan.

Zoekwoorden

DAX-query's hebben een eenvoudige syntaxis die bestaat uit slechts één vereist trefwoord, EVALUATE. EVALUATE wordt gevolgd door een tabelexpressie, zoals een DAX-functie of 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, DATATABLEen nog veel meer, 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 of een DAX-formule, die een scalaire waarde retourneren, werken met EVALUATE om de waarde als resultaattabel weer te geven wanneer deze tussen accolades wordt geplaatst. EVALUATE {[Total Sales]} of EVALUATE {COUNTROWS('Sales')} kan bijvoorbeeld 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 en COLUMN.

EVALUEREN (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 EVALUATE-instructies bevatten.

Evalueren van syntax

EVALUATE <table>  

EVALUATE-parameters

Term Definitie
table Een tabelexpressie.

EVALUATE-voorbeeld

EVALUATE
	'Sales Order'

Retourneert alle rijen en kolommen uit de tabel Verkooporder, als resultaattabel. Dit kan worden beperkt met het gebruik van TOPN of FILTERen gesorteerd met ORDER BY.

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

ORDER BY (optioneel)

Het optionele ORDER BY trefwoord definieert een of meer kolommen in de query of expressies die worden gebruikt om queryresultaten 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 op kolomeigenschap in semantische modellen is niet van toepassing op DAX-queryresultaten. Als een kolom moet worden gesorteerd op een andere kolom in het model, zoals in het geval van Maandnaam, moet de sortering op kolom ook worden opgenomen in de DAX-query die moet worden gebruikt in de ORDER BY.

Syntax van 'ORDER BY'

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

ORDER BY-parameters

Term Definitie
expression Een DAX-expressie die één scalaire waarde retourneert of een kolom die is opgenomen in de DAX-query.
ASC (standaard) Oplopende sorteervolgorde.
DESC Aflopende sorteervolgorde.

Voorbeeld van ORDER BY

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 en gemiddelde winst per order per maand, in oplopende volgorde per maand, als resultaattabel.

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

TOPN kiest niet 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. MET ORDER BY wordt alleen de resultaattabel gesorteerd die door TOPN wordt geretourneerd.

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 eerst de resultaten op verkooporder en vervolgens op verkooporderregel.

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

BEGINNEN BIJ (optioneel)

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

BEGIN BIJ syntaxis

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

BEGINNEN BIJ parameters

Term Definitie
value Een constante waarde. 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-component. De COMPONENT START AT kan zoveel argumenten bevatten als in de ORDER BY-component, maar niet meer. Het argument in START AT bepaalt de beginwaarde in kolom 1 van de ORDER BY-kolommen. Het tweede argument in START AT definieert de beginwaarde in kolom 2 van de ORDER BY KOLOMMEN binnen de rijen die voldoen aan de eerste waarde van 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 alle kolommen uit de tabel Verkooporder, in oplopende volgorde per verkooporder, beginnend bij SO43661. Rijen voor deze verkooporder worden niet opgenomen in de resultatentabel.

Schermopname waarin wordt getoond hoe u ORDER BY en START AT gebruikt voor een DAX-query in de DAX-queryweergave van Power BI Desktop.

DEFINE (optioneel)

Het optionele DEFINE trefwoord introduceert een of meer definities van berekende entiteiten die alleen bestaan voor de duur van de query. In tegenstelling tot EVALUATEkan er slechts één DEFINE blok zijn met een of meer definities in een DAX-query. DEFINE moet voorafgaan aan de eerste EVALUATE instructie en geldig zijn voor alle EVALUATE-instructies in de query. Definities kunnen variabelen, metingen, tabellen1en kolommen1zijn. Definities kunnen verwijzen naar andere definities die vóór of na de huidige definitie worden weergegeven. Er is ten minste één definitie vereist als het trefwoord DEFINE is opgenomen in een query.

DEFINE MEASURE is een veelvoorkomend scenario voor het bouwen van nieuwe metingen of het bewerken van bestaande metingen in een semantisch model. Wanneer de meting al bestaat in het model, gebruikt de DAX-query de meting DAX-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 waarvoor u mogelijk geen machtiging hebt om een modelmeting toe te voegen of als u deze niet in het model hoeft te hebben.

SYNTAX DEFINIËREN

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

PARAMETERS DEFINIËREN

Term Definitie
Entity METING, VAR, TABEL1ofwel KOLOM1.
name De naam van een meting, var, tabel of kolomdefinitie. Het kan geen expressie zijn. De naam hoeft niet uniek te zijn. De naam bestaat alleen voor de duur van de query.
expression Dax-expressies die een tabel- of scalaire waarde retourneren. De expressie kan een van de gedefinieerde entiteiten gebruiken. Als een scalaire expressie moet worden geconverteerd naar een tabelexpressie, verpakt u de expressie in een tabelconstructor met accolades {}of gebruikt u de functie ROW() om één rijtabel te retourneren.

[1]Waarschuwing: querytabel- en kolomdefinities zijn uitsluitend bedoeld voor intern gebruik. Hoewel u TABEL- en KOLOM-expressies voor een query zonder syntaxisfout kunt definiëren, kunnen deze runtimefouten veroorzaken en worden ze niet aanbevolen.

DEFINE-opmerkingen

  • Een DAX-query kan meerdere EVALUATE-instructies hebben, maar kan slechts één DEFINE-instructie hebben. Definities in de INSTRUCTIE DEFINE kunnen van toepassing zijn op alle EVALUATE-instructies in de query.

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

  • Metingendefinities voor een query overschrijven modelmetingen van dezelfde naam, maar worden alleen in de query gebruikt. Ze hebben geen invloed op de modelmeting.

  • 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 in de DAX-query is gedefinieerd om niet-gekochte producten weer te geven, met een extra gedefinieerde kolom die verwijst naar gedefinieerde variabelen. Er wordt ook een meting gedefinieerd en geëvalueerd om de rijen met niet-gekoppelde producten te tellen.

Schermopname waarin wordt getoond hoe u 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 jaar weer te geven. Alle metingen bestaan ook in het model en orders per klant worden gewijzigd in de DAX-query.

schermopname waarin wordt getoond hoe u DEFINE MEASURE gebruikt voor een DAX-query in de DAX-queryweergave van Power BI Desktop.

Parameters in DAX-query's

Een goed gedefinieerde DAX-queryinstructie kan worden geparameteriseerd en vervolgens, met alleen wijzigingen in de parameterwaarden, opnieuw en opnieuw worden gebruikt.

De Execute-methode (XMLA) heeft een Parameters Element (XMLA) collectie-element waarmee parameters kunnen worden gedefinieerd en een waarde kunnen worden toegewezen. In de verzameling definieert elk XMLA-element (Parameter Element) de naam van de parameter en een waarde ervoor.

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

Belangrijk

Parameters die zijn gedefinieerd in de sectie Parameters en niet worden gebruikt in het element <STATEMENT> genereren een foutreactie in XMLA. Parameters die worden gebruikt en niet zijn gedefinieerd in het <Parameters>-element genereren een foutantwoord in XMLA.

DAX-instructies
SUMMARIZECOLUMNS