Dela via


DAX-frågor

Rapportklienter som Power BI och Excel kör DAX-frågor när ett fält placeras i en rapport eller när ett filter tillämpas. Genom att använda SQL Server Management Studio (SSMS), Power BI Report Builder och verktyg med öppen källkod som DAX Studio kan du skapa och köra egna DAX-frågor. DAX-frågor returnerar resultat som en tabell direkt i verktyget, så att du snabbt kan skapa och testa prestanda för dina DAX-formler.

Innan du lär dig mer om frågor är det viktigt att du har en gedigen förståelse för DAX-grunderna. Om du inte redan har gjort det bör du se till att du checkar ut DAX-översikten.

Nyckelord

DAX-frågor har en enkel syntax som består av bara ett nyckelord som krävs, EVALUATE och flera valfria nyckelord: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE och COLUMN. Varje nyckelord definierar en instruktion som används under frågans varaktighet.

UTVÄRDERA (krävs)

På den mest grundläggande nivån är en DAX-fråga en EVALUATE-instruktion som innehåller ett tabelluttryck. Minst en EVALUATE-instruktion krävs, men en fråga kan innehålla valfritt antal EVALUATE-instruktioner.

UTVÄRDERA syntax

EVALUATE <table>  

UTVÄRDERA parametrar

Period Definition
table Ett tabelluttryck.

UTVÄRDERA exempel

EVALUATE
    'Internet Sales'

Returnerar alla rader och kolumner från tabellen Internet Sales som en tabell.

DAX Evaluate-instruktion

ORDER BY (valfritt)

Det valfria nyckelordet ORDER BY definierar ett eller flera uttryck som används för att sortera frågeresultat. Alla uttryck som kan utvärderas för varje rad i resultatet är giltiga.

ORDER BY Syntax

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

ORDER BY Parameters

Period Definition
uttryck Alla DAX-uttryck som returnerar ett enda skalärt värde.
ASC (standard) Stigande sorteringsordning.
DESC Fallande sorteringsordning.

ORDER BY Example

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

Returnerar alla rader och kolumner från tabellen Internet Sales i stigande ordning efter orderdatum som en tabell.

DAX Utvärdera ordning efter instruktion

START AT (valfritt)

Det valfria nyckelordet START AT används i en ORDER BY-sats . Det definierar värdet som frågeresultatet börjar med.

STARTA VID syntax

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

START AT-parametrar

Period Definition
värde Ett konstant värde. Det kan inte vara ett uttryck.
parameter Namnet på en parameter i en XMLA-instruktion som är prefix med ett @ tecken.

BÖRJA VID kommentarer

START AT-argument har en en-till-en-korrespondens med kolumnerna i ORDER BY-satsen. Det kan finnas lika många argument i START AT-satsen som i ORDER BY-satsen, men inte mer. Det första argumentet i START AT definierar startvärdet i kolumn 1 i ORDER BY-kolumnerna. Det andra argumentet i START AT definierar startvärdet i kolumn 2 i ORDER BY-kolumnerna i de rader som uppfyller det första värdet för kolumn 1.

START AT-exempel

EVALUATE
    'Internet Sales'
    
ORDER BY
    'Internet Sales'[Sales Order Number]
START AT "SO7000"

Returnerar alla rader och kolumner från tabellen Internet Sales i stigande ordning efter Försäljningsordernummer, med början vid SO7000.

DAX Evaluate order by Sales order number statement (DAX Evaluate order by Sales order number statement)

DEFINE (valfritt)

Det valfria DEFINE-nyckelordet introducerar en eller flera beräknade entitetsdefinitioner som bara finns under frågans varaktighet. Definitioner föregår EVALUATE-instruktionen och är giltiga för alla EVALUATE-instruktioner i frågan. Definitioner kan vara variabler, mått, tabeller1 och kolumner1. Definitioner kan referera till andra definitioner som visas före eller efter den aktuella definitionen. Minst en definition krävs om nyckelordet DEFINE ingår i en fråga.

DEFINIERA syntax

[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>) +

DEFINIERA parametrar

Period Definition
Enhet MÅTT, VAR, TABELL1 eller KOLUMN1.
name Namnet på en mått-, var-, tabell- eller kolumndefinition. Det kan inte vara ett uttryck. Namnet behöver inte vara unikt. Namnet finns bara under frågans varaktighet.
uttryck Dax-uttryck som returnerar ett tabell- eller skalärvärde. Uttrycket kan använda någon av de definierade entiteterna. Om du behöver konvertera ett skalärt uttryck till ett tabelluttryck omsluter du uttrycket i en tabellkonstruktor med klammerparenteser {}eller använder ROW() funktionen för att returnera en enskild radtabell.

[1] Varning: Frågeomfångsbegränsade TABELL- och KOLUMN-definitioner är endast avsedda för internt bruk. Du kan definiera TABELL- och KOLUMN-uttryck för en fråga utan syntaxfel, men de kan generera körningsfel och rekommenderas inte.

DEFINIERA kommentarer

  • En DAX-fråga kan ha flera EVALUATE-instruktioner, men kan bara ha en DEFINE-instruktion. Definitioner i DEFINE-instruktionen kan gälla för alla EVALUATE-instruktioner i frågan.

  • Minst en definition krävs i en DEFINE-instruktion.

  • Mät definitioner för en fråge åsidosättningsmodellmått med samma namn men används endast i frågan. De påverkar inte modellmåttet.

  • VAR-namn har unika begränsningar. Mer information finns i VAR – Parametrar.

DEFINIERA exempel

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]

Returnerar den beräknade totala försäljningen för åren 2013 och 2014 och kombinerad beräknad total försäljning för åren 2013 och 2014 som en tabell. Måttet i DEFINE-instruktionen, Internet Total Sales, används i uttrycken Total försäljning och Total försäljning för kombinerade år.

DAX Utvärdera med måttdefekt

Parametrar i DAX-frågor

En väldefinierad DAX-frågesats kan parametriseras och sedan användas om och om med bara ändringar i parametervärdena.

Metoden Execute Method (XMLA) har ett XMLA-samlingselement (Parameters Element) som gör att parametrar kan definieras och tilldelas ett värde. I samlingen definierar varje XMLA-element (Parameter Element) namnet på parametern och ett värde för den.

Referera till XMLA-parametrar genom att prefixera namnet på parametern med ett @ tecken. En plats i syntaxen där ett värde tillåts kan ersättas med ett parameteranrop. Alla XMLA-parametrar skrivs som text.

Viktigt!

Parametrar som definierats i avsnittet parametrar och som inte används i STATEMENT-elementet ><genererar ett felsvar i XMLA. Parametrar som används och inte definieras i elementet <Parametrar> genererar ett felsvar i XMLA.

DAX-instruktioner
SUMMARIZECOLUMNS
TREATAS
FILTER