Del via


DAX spørringer

Rapporteringsklienter som Power BI og Excel utfører DAX spørringer når visualobjekter vises i en rapport, eller et felt som legges til i en tabell, og disse DAX spørringene justeres når et filter brukes. ytelsesanalyse i Power BI Desktop, kan vise deg disse DAX spørringene og til og med kjøre dem i DAX spørringsvisning.

Ved å bruke DAX spørringsvisning i Power BI Desktop eller skrive DAX spørringer i Power BI-tjenesten, kan du opprette og kjøre dine egne DAX spørringer. Med Microsoft Fabrickan du øke produktiviteten ytterligere med Copilot for å skrive DAX spørringer i DAX spørringsvisning av skrivebord eller nett. I tillegg til Power BI-verktøy kan DAX spørringer kjøres i Fabric-notatblokker ved hjelp av semantisk kobling til å lese data fra semantiske modeller med python, og med rest-API-en for Kjør spørringer, også tilgjengelig i Power Automate-. Andre verktøy, for eksempel SQL Server Management Studio (SSMS), Power BI Report Builderog verktøy med åpen kildekode, for eksempel DAX Studio, lar deg også opprette og kjøre DAX spørringer.

DAX spørringer returnerer resultater som en tabell direkte i verktøyet, slik at du raskt kan opprette og teste ytelsen til DAX formler i mål eller bare vise dataene i den semantiske modellen. INFORMASJON og INFORMASJON. VIS DAX funksjoner kan også få informasjon om den semantiske modellen, for eksempel en liste over tabeller, kolonner, mål og mye mer.

Før du lærer om spørringer, er det viktig at du har en solid forståelse av DAX grunnleggende. Hvis du ikke allerede har gjort det, må du sjekke ut DAX oversikt.

Søkeord

DAX spørringer har en enkel syntaks bestående av bare ett obligatorisk nøkkelord, EVALUATE. EVALUATE etterfølges av et tabelluttrykk, for eksempel en DAX-funksjon eller tabellnavn, som når en resultattabell kjøres. Tabelluttrykk som sender ut en resultattabell inkluderer:

  1. Vanlige DAX funksjoner som sender ut en tabell, for eksempel SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLEog mange andre, arbeider med EVALUATE for å sende en resultattabell.
  2. Tabeller i modellen når det refereres til navn, fungerer med EVALUATE for å sende ut en resultattabell som viser dataene i tabellen. For eksempel kan EVALUATE tabellnavn bli kjørt som en DAX spørring.
  3. Mål i modellen eller en hvilken som helst DAX formel, som returnerer en skalarverdi, arbeider med EVALUATE for å vise verdien som en resultattabell når den er omsluttet av klammeparenteser. For eksempel kan EVALUATE {[Totalt salg]} eller EVALUATE {COUNTROWS('Salg')} bli kjørt som en DAX spørring. Disse kalles tabellkonstruktører.

Det finnes flere valgfrie nøkkelord som er spesifikke for DAX spørringer: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE og COLUMN.

EVALUATE (obligatorisk)

På det mest grunnleggende nivået er en DAX spørring en EVALUATE setning som inneholder et tabelluttrykk. Minst én EVALUATE setning kreves, men en spørring kan inneholde et hvilket som helst antall EVALUATE setninger.

EVALUATE syntaks

EVALUATE <table>

EVALUATE parametere

Vilkår Definisjon
table Et tabelluttrykk.

EVALUATE eksempel

EVALUATE
	'Sales Order'

Returnerer alle rader og kolonner fra Salgsordre-tabellen, som en resultattabell. Dette kan begrenses med bruken av TOPN eller FILTERog sorteres med ORDER BY.

Skjermbilde som viser hvordan du bruker EVALUATE for en DAX spørring i DAX spørringsvisning av Power BI Desktop.

ORDER BY (valgfritt)

Det valgfrie ORDER BY nøkkelordet definerer én eller flere kolonner i spørringen eller uttrykkene som brukes til å sortere spørringsresultater. Ethvert uttrykk som kan evalueres for hver rad i resultatet, er gyldig. Alle kolonner i selve spørringen er også gyldige.

Sorter etter kolonneegenskap i semantiske modeller gjelder ikke for DAX spørringsresultater. Hvis en kolonne skal sorteres etter en annen kolonne i modellen, for eksempel i tilfelle månedsnavn, bør sortering etter kolonne også inkluderes i DAX spørringen som skal brukes i ORDER BY.

ORDER BY syntaks

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

ORDER BY parametere

Vilkår Definisjon
expression Alle DAX uttrykk som returnerer én enkelt skalarverdi, eller kolonne som er inkludert i DAX spørringen.
ASC (standard) Stigende sorteringsrekkefølge.
DESC Synkende sorteringsrekkefølge.

ORDER BY eksempel

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 klesordrer og gjennomsnittlig fortjeneste per ordre etter måned, i stigende rekkefølge etter måned, som en resultattabell.

Skjermbilde som viser hvordan du bruker ORDER BY for en DAX spørring i DAX spørringsvisning av Power BI Desktop.

TOPN velger ikke det angitte antallet rader som skal returneres basert på sorteringsrekkefølgen som er angitt i ORDER BY. I stedet har TOPN sin egen syntaks for å angi en sortering før de 100 øverste radene returneres. ORDER BY sorterer bare resultattabellen som returneres av 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 100 beste salgsordrene sortert etter SalesOrderLienKey stigende, og sorterer deretter resultatene først etter salgsordre, deretter etter salgsordrelinje.

Skjermbilde som viser hvordan du bruker TOPN og ORDER BY for en DAX spørring i DAX spørringsvisning i Power BI Desktop.

START AT (valgfritt)

Det valgfrie START AT nøkkelordet brukes i en ORDER BY setningsdel. Den definerer verdien som spørringsresultatene starter på.

START AT syntaks

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

START AT parametere

Vilkår Definisjon
value En konstant verdi. Kan ikke være et uttrykk.
parameter Navnet på en parameter i en XMLA-setning prefiks med et @ tegn.

START AT merknader

START AT argumenter har en en-til-en-korrespondanse med kolonnene i ORDER BY-setningsdelen. Det kan være så mange argumenter i START AT-setningsdelen som det er i ORDER BY-setningsdelen, men ikke mer. Det første argumentet i START AT definerer startverdien i kolonne 1 i kolonnene ORDER BY. Det andre argumentet i START AT definerer startverdien i kolonne 2 i de ORDER BY kolonnene i radene som oppfyller den første verdien for kolonne 1.

START AT eksempel

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 Salgsordre-tabellen, i stigende rekkefølge etter salgsordre, fra og med SO43661. Rader før denne salgsordren er ikke inkludert i resultattabellen.

Skjermbilde som viser hvordan du bruker ORDER BY og START AT for en DAX spørring i DAX spørringsvisning i Power BI Desktop.

DEFINE (valgfritt)

Det valgfrie DEFINE-nøkkelordet introduserer én eller flere beregnede enhetsdefinisjoner som bare finnes i løpet av spørringen. I motsetning til EVALUATEkan det bare være én DEFINE blokk med én eller flere definisjoner i en DAX spørring. DEFINE må stå foran den første EVALUATE setningen og er gyldige for alle EVALUATE setninger i spørringen. Definisjoner kan være variabler, mål, tabeller1og kolonner1. Definisjoner kan referere til andre definisjoner som vises før eller etter gjeldende definisjon. Minst én definisjon kreves hvis DEFINE nøkkelord er inkludert i en spørring.

DEFINE MEASURE er et vanlig scenario for å bygge nye mål eller redigere eksisterende mål i en semantisk modell. Når målet allerede finnes i modellen, bruker DAX-spørringen målet DAX formelen som er definert i spørringen. Dette er nyttig for å teste mål med en DAX spørring før du oppdaterer modellen.

DEFINE MEASURE er også nyttig for å bygge ytterligere analyser med DAX formler for en bestemt DAX spørring der du kanskje ikke har tillatelse til å legge til et modellmål, eller det er ikke nødvendig å ha det i modellen.

DEFINE syntaks

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

Vilkår Definisjon
Entity MEASURE, VAR, TABELL1eller KOLONNE1.
name Navnet på en mål-, var-, tabell- eller kolonnedefinisjon. Det kan ikke være et uttrykk. Navnet trenger ikke å være unikt. Navnet finnes bare for varigheten av spørringen.
expression Alle DAX uttrykk som returnerer en tabell eller skalarverdi. Uttrykket kan bruke en av de definerte enhetene. Hvis det er behov for å konvertere et skalaruttrykk til et tabelluttrykk, kan du bryte uttrykket i en tabellkonstruktør med klammeparenteser {}, eller bruke ROW()-funksjonen til å returnere en enkelt radtabell.

[1]Forsiktig! TABELL- og KOLONNEdefinisjoner for spørring er bare ment for intern bruk. Selv om du kan definere TABELL- og KOLONNE-uttrykk for en spørring uten syntaksfeil, kan de produsere kjøretidsfeil og anbefales ikke.

DEFINE merknader

  • En DAX spørring kan ha flere EVALUATE setninger, men kan bare ha én DEFINE setning. Definisjoner i DEFINE-setningen kan gjelde for alle EVALUATE setninger i spørringen.

  • Minst én definisjon kreves i en DEFINE setning.

  • Måldefinisjoner for en spørring overstyrer modellmål med samme navn, men brukes bare i spørringen. De vil ikke påvirke modellmålet.

  • VAR navn har unike begrensninger. Hvis du vil ha mer informasjon, kan du se VAR – Parametere.

DEFINE eksempel

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 tabellen som er definert i DAX-spørringen for å vise produkter som ikke er i bruk, med en ekstra definert kolonne som refererer til definerte variabler. Et mål er også definert og evaluert for å telle radene med produkter som ikke er i bruk.

Skjermbilde som viser hvordan du bruker DEFINE for en DAX spørring i DAX spørringsvisning av 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 tabell som evaluerer tre definerte mål for å vise resultatene etter regnskapsår. Alle mål finnes også i modellen, og Ordrer per kunde endres i DAX spørringen.

Skjermbilde som viser hvordan du bruker DEFINEMEASURE for en DAX spørring i DAX spørringsvisning av Power BI Desktop.

Parametere i DAX spørringer

En veldefinert DAX spørringssetning kan parameteres og deretter brukes om og om igjen med bare endringer i parameterverdiene.

Metoden Execute Method (XMLA) har en Parameters Element (XMLA) samlingselement som gjør at parametere kan defineres og tilordnes en verdi. I samlingen definerer hvert Parameterelement (XMLA) element navnet på parameteren og en verdi for den.

Referer til XMLA-parametere ved å prefiksere navnet på parameteren med et @ tegn. Alle steder i syntaksen der en verdi er tillatt, kan verdien erstattes med et parameterkall. Alle XMLA-parametere skrives inn som tekst.

Viktig

Parametere som er definert i parameterinndelingen og som ikke brukes i <STATEMENT>-elementet, genererer et feilsvar i XMLA. Parametere som brukes og ikke er definert i <Parameters>-elementet genererer et feilsvar i XMLA.

DAX setningerSUMMARIZECOLUMNS