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:
- 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.
- 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.
- 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.
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.
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.
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.
DEFINE (valgfritt)
Det valgfrie DEFINE
-nøkkelordet introduserer én or mer beregnede enhetsdefinisjoner som bare finnes for duration for spørringen. I motsetning til EVALUATE
kan det bare være én DEFINE
blokk med én or flere definisjoner i en DAX spørring.
DEFINE
må stå foran firstEVALUATE
and 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.
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.
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.