Læs på engelsk

Del via


DAX-forespørgsler

Rapporteringsklienter som Power BI og Excel udfører DAX-forespørgsler, når visualiseringer vises i en rapport eller et felt, der er føjet til en tabel, og disse DAX-forespørgsler justeres, når der anvendes et filter. Den effektivitetsanalyse i Power BI Desktop kan vise dig disse DAX-forespørgsler og endda køre dem i DAX-forespørgselsvisningen.

Ved hjælp af DAX-forespørgselsvisning i Power BI Desktop eller Skriv DAX-forespørgsler i Power BI-tjenesten, kan du oprette og køre dine egne DAX-forespørgsler. Med Microsoft Fabrickan du øge din produktivitet yderligere med Copilot til at skrive DAX-forespørgsler i DAX-forespørgselsvisning af Desktop eller web. Ud over Power BI-værktøjer kan DAX-forespørgsler køres i Fabric-notesbøger ved hjælp af semantiske link til at læse data fra semantiske modeller med python og med REST API'en til Udfør forespørgsler, som også er tilgængelig i Power Automate. Andre værktøjer, f.eks. SQL Server Management Studio (SSMS), Power BI Report Builderog værktøjer med åben kildekode, f.eks. DAX Studio, giver dig også mulighed for at oprette og køre DAX-forespørgsler.

DAX-forespørgsler returnerer resultater som en tabel direkte i værktøjet, så du hurtigt kan oprette og teste ydeevnen af dine DAX-formler i målinger eller blot få vist dataene i din semantiske model. OPLYSNINGER OG OPLYSNINGER. VIEW DAX-funktioner kan også få oplysninger om din semantiske model, f.eks. en liste over tabeller, kolonner, målinger og meget mere.

Før du lærer om forespørgsler, er det vigtigt, at du har en solid forståelse af de grundlæggende DAX-elementer. Hvis du ikke allerede har gjort det, skal du tjekke DAX-oversigt.

Søgeord

DAX-forespørgsler har en enkel syntaks, der kun består af ét påkrævede nøgleord, EVALUATE. EVALUATE efterfølges af et tabeludtryk, f.eks. en DAX-funktion eller et tabelnavn, der, når der køres, returnerer en resultattabel. Tabeludtryk, der returnerer en resultattabel, omfatter:

  1. Almindelige DAX-funktioner, der opretter en tabel, f.eks. SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLEog mange andre arbejder med EVALUATE for at oprette en resultattabel.
  2. Tabeller i modellen, når der refereres til efter navn, fungerer sammen med EVALUATE for at oprette en resultattabel, der viser dataene i tabellen. EVALUATE 'Tabelnavn' kan f.eks. udføres som en DAX-forespørgsel.
  3. Målinger i modellen eller en HVILKEN som helst DAX-formel, der returnerer en skalarværdi, arbejder med EVALUATE for at få vist værdien som en resultattabel, når den er omsluttet af krøllede klammeparenteser. F.eks. EVALUATE {[Total Sales]} eller EVALUATE {COUNTROWS('Sales')} kan udføres som en DAX-forespørgsel. Disse kaldes tabelkonstruktører.

Der er flere valgfri nøgleord, der er specifikke for DAX-forespørgsler: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE og COLUMN.

EVALUATE (påkrævet)

På det mest grundlæggende niveau er en DAX-forespørgsel en EVALUATE sætning, der indeholder et tabeludtryk. Der kræves mindst én EVALUATE-sætning, men en forespørgsel kan indeholde et vilkårligt antal EVALUATE-sætninger.

EVALUATE-syntaks

EVALUATE <table>  

EVALUATE-parametre

Udtryk Definition
table Et tabeludtryk.

EKSEMPEL PÅ EVALUERING

EVALUATE
	'Sales Order'

Returnerer alle rækker og kolonner fra tabellen Sales Order som en resultattabel. Dette kan begrænses ved hjælp af TOPN- eller FILTER-og sorteres efter ORDER BY.

Skærmbillede, der viser, hvordan du bruger EVALUATE til en DAX-forespørgsel i DAX-forespørgselsvisning i Power BI Desktop.

ORDER BY (valgfrit)

Det valgfri ORDER BY nøgleord definerer en eller flere kolonner i forespørgslen eller de udtryk, der bruges til at sortere forespørgselsresultater. Alle udtryk, der kan evalueres for hver række i resultatet, er gyldige. Alle kolonner i selve forespørgslen er også gyldige.

Egenskaben Sortér efter kolonne i semantiske modeller gælder ikke for DAX-forespørgselsresultater. Hvis en kolonne skal sorteres efter en anden kolonne i modellen, f.eks. i tilfælde af Månedsnavn, skal sortering efter kolonne også inkluderes i DEN DAX-forespørgsel, der skal bruges i ORDER BY.

ORDER BY-syntaks

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

ORDER BY Parametre

Udtryk Definition
expression Ethvert DAX-udtryk, der returnerer en enkelt skalarværdi eller kolonne, der er inkluderet i DAX-forespørgslen.
ASC (standard) Stigende sorteringsrækkefølge.
DESC Faldende sorteringsrækkefølge.

ORDER BY Example

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

Returnerer tøjordrer og den gennemsnitlige avance pr. ordre pr. måned i stigende rækkefølge efter måned som en resultattabel.

Skærmbillede, der viser, hvordan du bruger ORDER BY til en DAX-forespørgsel i DAX-forespørgselsvisning i Power BI Desktop.

TOPN vælger ikke det angivne antal rækker, der skal returneres, baseret på den sorteringsrækkefølge, der er angivet i ORDER BY. TOPN har i stedet sin egen syntaks til eventuelt at angive en sortering, før de øverste 100 rækker returneres. ORDER BY sorterer kun den resultattabel, der returneres af 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

Returnerer de øverste 100 salgsordrer sorteret efter SalesOrderLienKey stigende og sorterer derefter resultaterne først efter salgsordre og derefter efter salgsordrelinje.

Skærmbillede, der viser, hvordan du bruger TOPN og ORDER BY til en DAX-forespørgsel i DAX-forespørgselsvisning i Power BI Desktop.

START AT (valgfrit)

Det valgfrie START AT nøgleord bruges i en ORDER BY-delsætning. Den definerer den værdi, som forespørgselsresultaterne starter med.

START AT-syntaks

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

START AT-parametre

Udtryk Definition
value En konstant værdi. Kan ikke være et udtryk.
parameter Navnet på en parameter i en XMLA-sætning med et præfiks med et @ tegn.

START VED Bemærkninger

START AT-argumenter har en en til en-overensstemmelse med kolonnerne i ORDER BY-delsætningen. Der kan være lige så mange argumenter i START AT-delsætningen, som der er i ORDER BY-delsætningen, men ikke mere. Det første argument i START AT definerer startværdien i kolonne 1 i kolonnerne ORDER BY. Det andet argument i START AT definerer startværdien i kolonne 2 i ORDER BY-kolonnerne i de rækker, der opfylder den første værdi for kolonne 1.

EKSEMPEL PÅ START VED

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"

Returnerer alle kolonner fra tabellen Sales Order i stigende rækkefølge efter Salgsordre med start ved SO43661. Rækker før denne salgsordre er ikke inkluderet i resultattabellen.

Skærmbillede, der viser, hvordan du bruger ORDER BY og START AT til en DAX-forespørgsel i DAX-forespørgselsvisning i Power BI Desktop.

DEFINE (valgfrit)

Det valgfri DEFINE nøgleord introducerer en eller flere beregnede objektdefinitioner, der kun findes i forespørgslens varighed. I modsætning til EVALUATEkan der kun være én DEFINE blok med en eller flere definitioner i en DAX-forespørgsel. DEFINE skal være foran den første EVALUATE sætning og er gyldige for alle EVALUATE-sætninger i forespørgslen. Definitioner kan være variabler, målinger, tabeller1og kolonner1. Definitioner kan referere til andre definitioner, der vises før eller efter den aktuelle definition. Der kræves mindst én definition, hvis nøgleordet DEFINE er inkluderet i en forespørgsel.

DEFINE MEASURE er et almindeligt scenarie til at oprette nye målinger eller redigere eksisterende målinger i en semantisk model. Når målingen allerede findes i modellen, bruger DAX-forespørgslen den DAX-målingsformel, der er defineret i forespørgslen. Dette er nyttigt til test af målinger med en DAX-forespørgsel, før du opdaterer modellen.

DEFINE MEASURE er også nyttigt at oprette yderligere analyser med DAX-formler for en bestemt DAX-forespørgsel, hvor du muligvis ikke har tilladelse til at tilføje en modelmåling, eller hvor det ikke er nødvendigt at have den i modellen.

DEFINE-syntaks

[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-parametre

Udtryk Definition
Entity MÅLING, VAR, TABEL1eller KOLONNE1.
name Navnet på en måling, var, tabel eller kolonnedefinition. Det kan ikke være et udtryk. Navnet behøver ikke at være entydigt. Navnet findes kun i forespørgslens varighed.
expression Ethvert DAX-udtryk, der returnerer en tabel eller skalarværdi. Udtrykket kan bruge en hvilken som helst af de definerede enheder. Hvis der er behov for at konvertere et skalarudtryk til et tabeludtryk, skal du ombryde udtrykket i en tabelkonstruktør med krøllede klammeparenteser {}eller bruge funktionen ROW() til at returnere en enkelt rækketabel.

[1]Advarsel! forespørgselsomfangede TABEL- og KOLONNEdefinitioner er kun beregnet til intern brug. Selvom du kan definere TABLE- og COLUMN-udtryk for en forespørgsel uden syntaksfejl, kan de medføre kørselsfejl og anbefales ikke.

Definer bemærkninger

  • En DAX-forespørgsel kan have flere EVALUATE-sætninger, men kan kun have én DEFINE-sætning. Definitioner i DEFINE-sætningen kan gælde for alle EVALUATE-sætninger i forespørgslen.

  • Der kræves mindst én definition i en DEFINE-sætning.

  • Målingsdefinitioner for en forespørgsel tilsidesætter modelmålinger af samme navn, men bruges kun i forespørgslen. De påvirker ikke modelmålingen.

  • VAR-navne har entydige begrænsninger. Du kan få mere at vide under VAR – Parametre.

EKSEMPEL PÅ DEFINE

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

Returnerer den tabel, der er defineret i DAX-forespørgslen, for at vise ikke-udtjente produkter med en yderligere defineret kolonne, der refererer til definerede variabler. En måling defineres og evalueres også for at tælle rækkerne for ikke-udtænkede produkter.

Skærmbillede, der viser, hvordan du bruger DEFINE til en DAX-forespørgsel i DAX-forespørgselsvisning i 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]
	)

Returnerer en tabel, der evaluerer tre definerede målinger for at vise resultaterne efter regnskabsår. Alle målinger findes også i modellen, og Ordrer pr. kunde ændres i DAX-forespørgslen.

Skærmbillede, der viser, hvordan du bruger DEFINE MEASURE til en DAX-forespørgsel i DAX-forespørgselsvisning i Power BI Desktop.

Parametre i DAX-forespørgsler

En veldefineret DAX-forespørgselssætning kan parameteriseres og derefter bruges igen og igen med blot ændringer i parameterværdierne.

METODEN Execute Method (XMLA) har et XMLA-element (Parameters Element) samlingselement, der gør det muligt at definere og tildele parametre en værdi. I samlingen definerer hvert parameterelement (XMLA) element navnet på parameteren og en værdi for den.

Reference til XMLA-parametre ved at angive et præfiks for navnet på parameteren med et @ tegn. Et vilkårligt sted i syntaksen, hvor en værdi er tilladt, kan værdien erstattes med et parameterkald. Alle XMLA-parametre skrives som tekst.

Vigtigt

Parametre, der er defineret i parameterafsnittet og ikke bruges i elementet <STATEMENT>, genererer et fejlsvar i XMLA. Parametre, der bruges og ikke er defineret i elementet <Parameters>, genererer et fejlsvar i XMLA.

DAX-sætninger
SUMMARIZECOLUMNS-