Dotazy DAX

Klienti generování sestav, jako je Power BI a Excel, spouštějí dotazy DAX při každém umístění pole do sestavy nebo při použití filtru. Pomocí aplikace SQL Server Management Studio (SSMS), Power BI Tvůrce sestav a opensourcových nástrojů, jako je DAX Studio, můžete vytvářet a spouštět vlastní dotazy DAX. Dotazy DAX vrací výsledky jako tabulku přímo v nástroji, takže můžete rychle vytvářet a testovat výkon vzorců DAX.

Než se seznámíte s dotazy, je důležité, abyste pochopili základy jazyka DAX. Pokud jste to ještě neudělali, nezapomeňte si prohlédnout přehled jazyka DAX.

Klíčová slova

Dotazy DAX mají jednoduchou syntaxi, která se skládá pouze z jednoho požadovaného klíčového slova, FUNKCE EVALUATE a několika volitelných klíčových slov: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE a COLUMN. Každé klíčové slovo definuje příkaz použitý pro dobu trvání dotazu.

EVALUATE (povinné)

Na nejzácácnější úrovni je dotaz DAX příkaz EVALUATE obsahující výraz tabulky. Vyžaduje se alespoň jeden příkaz EVALUATE, ale dotaz může obsahovat libovolný počet příkazů EVALUATE.

Syntaxe EVALUATE

EVALUATE <table>  

Parametry EVALUATE

Pojem definice
table Výraz tabulky.

Příklad EVALUATE

EVALUATE
    'Internet Sales'

Vrátí všechny řádky a sloupce z tabulky Internet Sales jako tabulku.

DAX Evaluate statement

ORDER BY (volitelné)

Volitelné klíčové slovo ORDER BY definuje jeden nebo více výrazů použitých k řazení výsledků dotazu. Libovolný výraz, který lze vyhodnotit pro každý řádek výsledku, je platný.

Syntaxe ORDER BY

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

Parametry ORDER BY

Pojem definice
výraz Libovolný výraz DAX, který vrací jednu skalární hodnotu.
ASC (výchozí) Vzestupné pořadí řazení
DESC Sestupné pořadí řazení

Příklad ORDER BY

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

Vrátí všechny řádky a sloupce z tabulky Internet Sales ve vzestupném pořadí podle data objednávky jako tabulky.

DAX Evaluate order by statement

START AT (volitelné)

Volitelné klíčové slovo START AT se používá uvnitř klauzule ORDER BY . Definuje hodnotu, pro kterou začínají výsledky dotazu.

Syntaxe START AT

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

Parametry START AT

Pojem definice
hodnota Konstantní hodnota. Výraz nemůže být.
parametr Název parametru v příkazu XMLA s předponou znaku @ .

ZAČÍT NA Poznámky

Argumenty START AT mají shodu 1:1 se sloupci v klauzuli ORDER BY. V klauzuli START AT může být tolik argumentů, kolik existuje v klauzuli ORDER BY, ale ne více. První argument v start AT definuje počáteční hodnotu ve sloupci 1 sloupců ORDER BY. Druhý argument v start AT definuje počáteční hodnotu ve sloupci 2 sloupců ORDER BY v řádcích, které splňují první hodnotu sloupce 1.

Příklad START AT

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

Vrátí všechny řádky a sloupce z tabulky Internet Sales ve vzestupném pořadí podle čísla prodejní objednávky počínaje so7000.

DAX Evaluate order by Sales order number statement

DEFINE (volitelné)

Volitelné klíčové slovo DEFINE zavádí jednu nebo více definic počítaných entit, které existují pouze po dobu trvání dotazu. Definice předchází příkazu EVALUATE a jsou platné pro všechny příkazy EVALUATE v dotazu. Definice můžou být proměnné, míry, tabulky1 a sloupce1. Definice můžou odkazovat na jiné definice, které se zobrazí před nebo za aktuální definicí. Nejméně jedna definice se vyžaduje, pokud je klíčové slovo DEFINE zahrnuto v dotazu.

DEFINICE syntaxe

[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 – parametry

Pojem definice
Entity MÍRA, VAR, TABULKA1 nebo SLOUPEC1.
name Název míry, var, tabulky nebo definice sloupce. Nemůže to být výraz. Název nemusí být jedinečný. Název existuje pouze po dobu trvání dotazu.
výraz Libovolný výraz DAX, který vrací tabulku nebo skalární hodnotu. Výraz může použít libovolnou z definovaných entit. Pokud je potřeba převést skalární výraz na výraz tabulky, zabalte výraz uvnitř konstruktoru tabulky složenými složenými závorkami {}nebo použijte ROW() funkci k vrácení tabulky s jedním řádkem.

[1]Upozornění: Definice TABULEK a SLOUPCŮ s vymezeným oborem dotazu jsou určeny pouze pro interní použití. I když můžete definovat výrazy TABLE a COLUMN pro dotaz bez chyby syntaxe, mohou způsobit chyby za běhu a nedoporučuje se.

DEFINOVAT poznámky

  • Dotaz DAX může mít více příkazů EVALUATE, ale může mít pouze jeden příkaz DEFINE. Definice v příkazu DEFINE se můžou vztahovat na všechny příkazy EVALUATE v dotazu.

  • V příkazu DEFINE je vyžadována aspoň jedna definice.

  • Definice měr pro dotaz přepíší míry modelu se stejným názvem, ale používají se pouze v rámci dotazu. Nebudou mít vliv na míru modelu.

  • Názvy var mají jedinečná omezení. Další informace najdete v tématu VAR – Parametry.

Příklad 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]

Vrátí vypočítané celkové prodeje za roky 2013 a 2014 a sloučené celkové prodeje za roky 2013 a 2014 jako tabulku. Míra v příkazu DEFINE, Internet Total Sales, se používá ve výrazech Total Sales i Combined Years Total Sales.

DAX Evaluate with measure defnition

Parametry v dotazech DAX

Dobře definovaný příkaz dotazu DAX je možné parametrizovat a pak ho použít znovu s pouhými změnami v hodnotách parametrů.

Metoda Execute Method (XMLA)element kolekce Parameters Element (XMLA), který umožňuje definovat a přiřadit parametry hodnotu. V kolekci každý element Parameter Element (XMLA) definuje název parametru a hodnotu do něj.

Odkazujte na parametry XMLA předponou názvu parametru znakem @ . Jakékoli místo v syntaxi, kde je povolena hodnota, může být hodnota nahrazena voláním parametru. Všechny parametry XMLA jsou zadány jako text.

Důležité

Parametry definované v oddílu parametrů a nepoužívané v elementu <STATEMENT> generují chybovou odpověď v XMLA. Parametry použité a nedefinované v elementu <Parameters> generují chybovou odpověď v XMLA.

Příkazy JAZYKA DAX
SUMMARIZECOLUMNS
TREATAS
FILTR