Del via


DAX spørringer

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

Ved å bruke DAX spørringsvisning i Power BI Desktop orskrive DAX spørringer i Power BI-tjenesten, kan du opprette and 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 Desktop or web. 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, and med rest-API-en for kjør spørringer, også tilgjengelig i Power Automatiser. Andre verktøy som SQL Server Management Studio (SSMS), Power BI Report Builder, and åpen kildekode-verktøy som DAX Studio, lar deg også opprette and kjøre DAX spørringer.

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

Før du lærer om spørringer, er det viktig at du har en solid forståelse av DAX grunnleggende. If 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 or tabellnavn, som når en resultattabell kjøres. Tabelluttrykk som sender ut en resultattabell inkluderer:

  1. Vanlige DAX funksjoner som sender en tabell, for eksempel SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, and 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 or alle DAX formler, som returnerer en skalar value, arbeider med EVALUATE for å vise value som en resultattabell når den er omsluttet av klammeparenteser. For eksempel kan EVALUATE {[Totalt salg]}orEVALUATE {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, and 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 EVALUATEstatements.

EVALUATE syntaks

EVALUATE <table>

EVALUATE parametere

Vilkår Definisjon
table Et tabelluttrykk.

EVALUATE eksempel

EVALUATE
	'Sales Order'

Returnerer all rader and kolonner fra Salgsordre-tabellen, som en resultattabell. Dette kan begrenses med bruken av TOPNorFILTER, and sortert 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 or flere kolonner i spørringen or uttrykk 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 not for DAX spørringsresultater. If en kolonne skal sorteres etter en annen kolonne i modellen, for eksempel når det gjelder Month navn, 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 en enkelt skalar value, or 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 klesbestillinger andaverage fortjeneste per ordre etter month, i stigende rekkefølge etter month, 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 not 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 first etter salgsordre, deretter etter salgsordrelinje.

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

START AT (valgfritt)

Det valgfrie START AT nøkkelordet brukes i en ORDER BY setningsdel. Den definerer value 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 value. 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 not mer. Argumentet first i START AT definerer start value i kolonne 1 i kolonnene ORDER BY. Argumentet second i START AT definerer start-value i kolonne 2 i de ORDER BY kolonnene i radene som oppfyller firstvalue 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 all kolonner fra Salgsordre-tabellen, i stigende rekkefølge etter salgsordre, fra og med SO43661. Rader før denne salgsordren er not inkludert i resultattabellen.

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

DEFINE (valgfritt)

Det valgfrie DEFINE-nøkkelordet introduserer én or mer beregnede enhetsdefinisjoner som bare finnes for duration for spørringen. I motsetning til EVALUATEkan det bare være én DEFINE blokk med én or flere definisjoner i en DAX spørring. DEFINE må stå foran firstEVALUATEand er gyldige for allEVALUATEstatements i spørringen. Definisjoner kan være variabler, mål, tabeller1, and kolonner1. Definisjoner kan referere til andre definisjoner som vises før or etter gjeldende definisjon. Minst én definisjon kreves ifDEFINE nøkkelordet er inkludert i en spørring.

DEFINE MEASURE er et vanlig scenario for å bygge nye mål or redigere eksisterende mål i en semantisk modell. Når measure allerede finnes i modellen, bruker DAX-spørringen measureDAX 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 not har tillatelse til å legge til en modell measureor det er not nødvendig å ha den 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, TABELL1, or KOLONNE1.
name Navnet på en measure, var, tabell, or kolonnedefinisjon. Det kan ikke være et uttrykk. Navnet må not være unikt. Navnet finnes bare for duration for spørringen.
expression Alle DAX uttrykk som returnerer en tabell or skalar value. Uttrykket kan bruke en av de definerte enhetene. If det er behov for å convert et skalaruttrykk i et tabelluttrykk, bryte uttrykket i en tabellkonstruktør med klammeparenteser {}, or bruke ROW()-funksjonen til å returnere en enkelt radtabell.

[1]Forsiktig! Tabell med omfangsområde for spørring and KOLONNE-definisjoner er bare ment for intern bruk. Selv om du kan define TABELL-and KOLONNE-uttrykk for en spørring uten syntaks error, kan de produsere kjøretidsfeil and anbefales not.

DEFINE merknader

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

  • Minst én definisjon kreves i en DEFINE setning.

  • Measure definisjoner for en spørring overstyrer modellmål med samme navn, men brukes bare i spørringen. De vil not påvirke modellen measure.

  • 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. En measure er også definert and evaluert for å count 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 regnskapsmessig year. All mål finnes også i modellen, endres and Ordrer per kunde 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 and deretter brukes over and med bare endringer i parameteren values.

Metoden Execute Method (XMLA) har et parameterelement (XMLA) samlingselement som gjør at parametere kan defineres and tilordnet en value. I samlingen definerer hvert Parameterelement (XMLA) element navnet på parameteren and en value til den.

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

Viktig

Parametere definert i parameterdelen andnot brukt i <STATEMENT>-elementet generate et error svar i XMLA. Parametere som brukes andnot definert i <Parameters>-elementet generate et error svar i XMLA.

DAX statements SUMMARIZECOLUMNS