Share via


DAX-forespørgsler

Rapporteringsklienter som Power BI og Excel udfører DAX-forespørgsler, når et felt placeres i en rapport, eller når der anvendes et filter. Ved hjælp af SQL Server Management Studio (SSMS), Power BI Report Builder og værktøjer med åben kildekode, f.eks . DAX Studio, kan du oprette og køre dine egne 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.

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

Nøgleord

DAX-forespørgsler har en enkel syntaks, der kun består af ét påkrævede nøgleord, EVALUATE og flere valgfri nøgleord: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE og COLUMN. Hvert nøgleord definerer en sætning, der bruges i forespørgslens varighed.

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

Begreb Definition
table Et tabeludtryk.

EKSEMPEL PÅ EVALUERING

EVALUATE
    'Internet Sales'

Returnerer alle rækker og kolonner fra tabellen Internet Sales som en tabel.

DAX Evaluate-sætning

ORDER BY (valgfrit)

Nøgleordet ORDER BY definerer et eller flere udtryk, der bruges til at sortere forespørgselsresultater. Alle udtryk, der kan evalueres for hver række i resultatet, er gyldige.

ORDER BY-syntaks

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

ORDER BY Parametre

Begreb Definition
Udtryk Ethvert DAX-udtryk, der returnerer en enkelt skalarværdi.
ASC (standard) Stigende sorteringsrækkefølge.
DESC Faldende sorteringsrækkefølge.

ORDER BY Example

EVALUATE
    'Internet Sales'
    
ORDER BY
    'Internet Sales'[Order Date]

Returnerer alle rækker og kolonner fra tabellen Internet Sales i stigende rækkefølge efter Ordredato som en tabel.

DAX Evaluer rækkefølge efter-sætning

START AT (valgfrit)

Det valgfri nøgleord START AT 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

Begreb Definition
værdi En konstant værdi. Kan ikke være et udtryk.
parameter Navnet på en parameter i en XMLA-sætning med præfikset 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
    'Internet Sales'
    
ORDER BY
    'Internet Sales'[Sales Order Number]
START AT "SO7000"

Returnerer alle rækker og kolonner fra tabellen Internet Sales i stigende rækkefølge efter Sales Order Number, der starter ved SO7000.

DAX Evaluer ordre efter sales order number-sætning

DEFINE (valgfrit)

Det valgfri nøgleord DEFINE introducerer en eller flere beregnede objektdefinitioner, der kun findes i forespørgslens varighed. Definitioner foran EVALUATE-sætningen og er gyldige for alle EVALUATE-sætninger i forespørgslen. Definitioner kan være variabler, målinger, tabel1 og 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-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

Begreb Definition
Enhed MÅLING, VAR, TABEL1 eller KOLONNE1.
navn 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.
Udtryk 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 ROW() funktionen til at returnere en tabel med en enkelt række.

[1]Advarsel! Forespørgselsomfangede TABLE- og COLUMN-definitioner 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
    MEASURE 'Internet Sales'[Internet Total Sales] =
        SUM ( 'Internet Sales'[Sales Amount] )

EVALUATE
SUMMARIZECOLUMNS (
    'Date'[Calendar Year],
    TREATAS (
        {
            2013,
            2014
        },
        'Date'[Calendar Year]
    ),
    "Total Sales", [Internet Total Sales],
    "Combined Years Total Sales",
        CALCULATE (
            [Internet Total Sales],
            ALLSELECTED ( 'Date'[Calendar Year] )
        )
)
ORDER BY [Calendar Year]

Returnerer det beregnede samlede salg for årene 2013 og 2014 og kombineret beregnet samlet salg for årene 2013 og 2014 som en tabel. Målingen i define-sætningen Internet Total Sales bruges i både Total Sales og Combined Years Total Sales.

DAX Evaluer med målingsdefnition

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-samlingselement (Parameters Element), der gør det muligt at definere og tildele parametre en værdi. I samlingen definerer hvert XMLA-element (Parameter Element) navnet på parameteren og en værdi til 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 <Parametre> , genererer et fejlsvar i XMLA.

DAX-sætninger
SUMMARIZECOLUMNS
TREATAS
FILTER