Dotazy DAX

Klienti zostáv, ako napríklad Power BI a Excel, vykonávajú dotazy jazyka DAX vždy, keď sa pole umiestni do zostavy alebo pri použití filtra. Pomocou nástroja SQL Server Management Studio (SSMS), Zostavovač zostáv služby Power BI a nástrojov open-source, ako je napríklad DAX Studio, môžete vytvárať a spúšťať vlastné dotazy jazyka DAX. Dotazy DAX vracajú výsledky ako tabuľku priamo v nástroji, čo vám umožní rýchlo vytvoriť a otestovať výkon vzorcov DAX.

Pred výučbou dotazov je dôležité mať solídne znalosti o základoch jazyka DAX. Ak ste tak ešte neurobili, pozrite si prehľad jazyka DAX.

Kľúčové slová

Dotazy DAX majú jednoduchú syntax skladanú len z jedného požadovaného kľúčového slova, EVALUATE a niekoľkých voliteľných kľúčových slov: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE a COLUMN. Každé kľúčové slovo definuje príkaz, ktorý sa bude používať počas trvania dotazu.

EVALUATE (povinné)

Na najzákladnejšej úrovni je dotaz DAX príkaz EVALUATE obsahujúci výraz tabuľky. Vyžaduje sa aspoň jeden príkaz EVALUATE, no dotaz môže obsahovať ľubovoľný počet príkazov EVALUATE.

VYHODNOTIŤ syntax

EVALUATE <table>  

VYHODNOTIŤ parametre

Obdobie Definícia
table Výraz tabuľky.

Príklad vyhodnotenia

EVALUATE
    'Internet Sales'

Vráti všetky riadky a stĺpce z tabuľky Internetový predaj ako tabuľku.

Vyhodnocovaný príkaz jazyka DAX

ORDER BY (Voliteľné)

Voliteľné kľúčové slovo ORDER BY definuje jeden alebo viac výrazov, ktoré sa používajú na zoradenie výsledkov dotazu. Akýkoľvek výraz, ktorý možno vyhodnotiť pre každý riadok výsledku, je platný.

ORDER BY Syntax

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

Parametre ORDER BY

Obdobie Definícia
Výraz Akýkoľvek výraz DAX, ktorý vracia jednu skalárnu hodnotu.
ASC (predvolené) Vzostupné poradie zoradenia.
POPIS Zostupné poradie zoradenia.

Príklad ZORADENIA PODĽA

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

Vráti všetky riadky a stĺpce z tabuľky Internetový predaj vo vzostupnom poradí podľa dátumu objednávky, ako tabuľku.

Vyhodnocovanie príkazu zoradenia jazyka DAX

START AT (Voliteľné)

Voliteľné kľúčové slovo START AT sa používa v rámci klauzuly ORDER BY . Definuje hodnotu, pri ktorej sa začnú výsledky dotazu.

START AT Syntax

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

Parametre START AT

Obdobie Definícia
hodnota Konštantná hodnota. Nemôže to byť výraz.
parameter Názov parametra v príkaze XMLA s predponou znaku @ .

Poznámky k start AT

Argumenty START AT majú korešpondenciu one-to-one so stĺpcami v klauzule ORDER BY. V klauzule START AT môže byť toľko argumentov, koľko je ich v klauzule ORDER BY, ale nie viac. Prvý argument v parametre START AT definuje počiatočnú hodnotu v stĺpci 1 stĺpcov ORDER BY. Druhý argument v parametre START AT definuje počiatočnú hodnotu v stĺpci 2 stĺpcov ORDER BY v rámci riadkov, ktoré spĺňajú prvú hodnotu pre stĺpec 1.

Príklad pre START AT

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

Vráti všetky riadky a stĺpce z tabuľky Internetový predaj vo vzostupnom poradí podľa čísla predajnej objednávky, počnúc číslom SO7000.

Vyhodnocovaný príkaz zoradenia jazyka DAX podľa čísla predajnej objednávky

DEFINE (Voliteľné)

Voliteľné kľúčové slovo DEFINE predstavuje jednu alebo viac definícií vypočítanej entity, ktoré existujú len počas trvania dotazu. Definície predchádzajú príkazu EVALUATE a sú platné pre všetky príkazy EVALUATE v dotaze. Definície môžu byť premenné, mierky, tabuľky1 a stĺpce1. Definície môžu odkazovať na iné definície, ktoré sa objavujú pred alebo za aktuálnou definíciou. Ak je v dotaze zahrnuté kľúčové slovo DEFINE, vyžaduje sa aspoň jedna definícia.

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

DEFINOVANIE parametrov

Obdobie Definícia
Entity MEASURE, VAR, TABLE1 alebo COLUMN1.
názov Názov mierky, premennej var, tabuľky alebo definície stĺpca. Nemôže to byť výraz. Názov nemusí byť jedinečný. Názov existuje len počas trvania dotazu.
Výraz Akýkoľvek výraz DAX, ktorý vracia tabuľku alebo skalárnu hodnotu. Výraz môže použiť ktorúkoľvek zo zadefinovaných entít. Ak je potrebné skonvertovať skalárny výraz na výraz tabuľky, zabaľte výraz do konštruktora tabuľky zloženými zátvorkou {}alebo použite ROW() funkciu na vrátenie tabuľky s jedným riadkom.

[1]Upozornenie: Definície tabuliek a stĺpcov v rozsahu dotazu sú určené len na interné použitie. Hoci výrazy TABUĽKA a STĹPEC môžete definovať pre dotaz bez syntaktickej chyby, môžu spôsobovať chyby v režime runtime a neodporúčajú sa.

DEFINOVANIE poznámok

  • Dotaz DAX môže mať viacero príkazov EVALUATE, ale môže mať iba jeden príkaz DEFINE. Definície v príkaze DEFINE sa môžu použiť na všetky príkazy EVALUATE v dotaze.

  • V príkaze DEFINE sa vyžaduje aspoň jedna definícia.

  • Definície mierky pre dotaz prepíšu mierky modelu s rovnakým názvom, ale používajú sa len v rámci dotazu. Nebudú mať vplyv na mierku modelu.

  • Názvy funkcie VAR majú jedinečné obmedzenia. Ďalšie informácie nájdete v téme VAR – parametre.

Príklad definovania

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áti vypočítané celkové predaje za roky 2013 a 2014 a vypočítaný celkový predaj spolu za roky 2013 a 2014 ako tabuľku. Mierka v príkaze DEFINE Celkový internetový predaj sa používa vo výraze Celkový predaj, ako aj výraze Celkový predaj spolu.

Vyhodnocovanie jazyka DAX s mierkou

Parametre v dotazoch jazyka DAX

Dobre definovaný príkaz dotazu DAX možno parametrizovať a potom opakovane používať s použitím len zmien v hodnotách parametra.

Metóda Execute Method (XMLA)prvok kolekcie Prvok parametrov (XMLA ), ktorý umožňuje definovať a priradiť hodnoty parametrov. Každý prvok v rámci kolekcie Parameter Element (XMLA) definuje názov parametra a jeho hodnotu.

Referenčné parametre XMLA tým, že predurujú názov parametra so znakom @ . Na akomkoľvek mieste v syntaxi, kde je hodnota povolená, možno hodnotu nahradiť volaním parametra. Všetky parametre XMLA sú zadané ako text.

Dôležité

Parametre definované v časti parametre a nepoužiné v prvku <STATEMENT> vygenerujú chybovú odpoveď v XMLA. Použité parametre, nedefinované v prvku <Parametre vygenerujú> chybovú odpoveď v XMLA.

Príkazy DAX
FUNKCIA SUMMARIZECOLUMNS
TREATAS
FILTER