Zapytania języka DAX

Klienci raportowania, tacy jak Power BI i Excel, wykonują zapytania języka DAX za każdym razem, gdy pole zostanie umieszczone w raporcie lub po zastosowaniu filtru. Za pomocą programu SQL Server Management Studio (SSMS), programu Power BI Report Builder i narzędzi typu open source, takich jak DAX Studio, można tworzyć i uruchamiać własne zapytania języka DAX. Zapytania języka DAX zwracają wyniki jako tabelę bezpośrednio w narzędziu, umożliwiając szybkie tworzenie i testowanie wydajności formuł języka DAX.

Przed zapoznaniem się z zapytaniami ważne jest, aby mieć solidną wiedzę na temat podstaw języka DAX. Jeśli jeszcze tego nie zrobiono, zapoznaj się z omówieniem języka DAX.

Słowa kluczowe

Zapytania języka DAX mają prostą składnię składającą się tylko z jednego wymaganego słowa kluczowego, EVALUATE i kilku opcjonalnych słów kluczowych: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE i COLUMN. Każde słowo kluczowe definiuje instrukcję używaną przez czas trwania zapytania.

EVALUATE (wymagane)

Na najbardziej podstawowym poziomie zapytanie języka DAX jest instrukcją EVALUATE zawierającą wyrażenie tabeli. Wymagana jest co najmniej jedna instrukcja EVALUATE, jednak zapytanie może zawierać dowolną liczbę instrukcji EVALUATE.

Składnia EVALUATE

EVALUATE <table>  

PARAMETRY EVALUATE

Termin Definicja
table Wyrażenie tabeli.

Przykład EVALUATE

EVALUATE
    'Internet Sales'

Zwraca wszystkie wiersze i kolumny z tabeli Internet Sales jako tabelę.

Instrukcja Evaluate języka DAX

ORDER BY (opcjonalnie)

Opcjonalne słowo kluczowe ORDER BY definiuje jedno lub więcej wyrażeń używanych do sortowania wyników zapytania. Każde wyrażenie, które można ocenić dla każdego wiersza wyniku, jest prawidłowe.

SKŁADNIA ORDER BY

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

PARAMETRY ORDER BY

Termin Definicja
wyrażenie Dowolne wyrażenie języka DAX zwracające pojedynczą wartość skalarną.
ASC (ustawienie domyślne) Rosnąca kolejność sortowania.
DESC Kolejność sortowania malejącego.

PRZYKŁAD ORDER BY

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

Zwraca wszystkie wiersze i kolumny z tabeli Internet Sales w kolejności rosnącej według daty zamówienia jako tabeli.

DaX Evaluate order by, instrukcja

START AT (opcjonalnie)

Opcjonalne słowo kluczowe START AT jest używane wewnątrz klauzuli ORDER BY . Definiuje wartość, na której zaczynają się wyniki zapytania.

START AT Składnia

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

PARAMETRY START AT

Termin Definicja
wartość Stała wartość. Nie można być wyrażeniem.
parametr Nazwa parametru w instrukcji XMLA poprzedzona znakiem @ .

ZACZNIJ OD UWAGI

Argumenty START AT mają korespondencję jeden do jednego z kolumnami w klauzuli ORDER BY. W klauzuli START AT może istnieć tyle argumentów, ile istnieje w klauzuli ORDER BY, ale nie więcej. Pierwszy argument w funkcji START AT definiuje wartość początkową w kolumnie 1 kolumn ORDER BY. Drugi argument w funkcji START AT definiuje wartość początkową w kolumnie 2 kolumn ORDER BY w wierszach spełniających pierwszą wartość dla kolumny 1.

PRZYKŁAD START AT

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

Zwraca wszystkie wiersze i kolumny z tabeli Internet Sales w kolejności rosnącej według numeru zamówienia sprzedaży, począwszy od SO7000.

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

DEFINE (opcjonalnie)

Opcjonalne słowo kluczowe DEFINE wprowadza co najmniej jedną definicję jednostki obliczeniowej, która istnieje tylko przez czas trwania zapytania. Definicje poprzedzają instrukcję EVALUATE i są prawidłowe dla wszystkich instrukcji EVALUATE w zapytaniu. Definicje mogą być zmiennymi, miarami, tabelami1 i kolumnami1. Definicje mogą odwoływać się do innych definicji, które pojawiają się przed lub po bieżącej definicji. Co najmniej jedna definicja jest wymagana, jeśli słowo kluczowe DEFINE jest zawarte w zapytaniu.

DEFINIOWANIE składni

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

DEFINIOWANIE parametrów

Termin Definicja
Encja MIARA, VAR, TABELA1 lub KOLUMNA1.
name Nazwa miary, var, tabeli lub definicji kolumny. Nie może to być wyrażenie. Nazwa nie musi być unikatowa. Nazwa istnieje tylko przez czas trwania zapytania.
wyrażenie Dowolne wyrażenie języka DAX zwracające tabelę lub wartość skalarną. Wyrażenie może używać dowolnej ze zdefiniowanych jednostek. Jeśli istnieje potrzeba przekonwertowania wyrażenia skalarnego na wyrażenie tabeli, opakuj wyrażenie wewnątrz konstruktora tabeli nawiasami klamrowymi {}lub użyj ROW() funkcji , aby zwrócić pojedynczą tabelę wierszy.

[1]Uwaga: definicje TABELI i KOLUMNy w zakresie zapytania są przeznaczone tylko do użytku wewnętrznego. Chociaż można zdefiniować wyrażenia TABLE i COLUMN dla zapytania bez błędu składniowego, mogą one powodować błędy środowiska uruchomieniowego i nie są zalecane.

DEFINIOWANIE uwag

  • Zapytanie języka DAX może zawierać wiele instrukcji EVALUATE, ale może mieć tylko jedną instrukcję DEFINE. Definicje w instrukcji DEFINE mogą być stosowane do dowolnych instrukcji EVALUATE w zapytaniu.

  • Co najmniej jedna definicja jest wymagana w instrukcji DEFINE.

  • Definicje miar dla kwerendy zastępują miary modelu o tej samej nazwie, ale są używane tylko w zapytaniu. Nie wpłynie to na miarę modelu.

  • Nazwy VAR mają unikatowe ograniczenia. Aby dowiedzieć się więcej, zobacz VAR — parametry.

Definiowanie przykładu

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]

Zwraca obliczoną łączną sprzedaż dla lat 2013 i 2014 oraz łączną łączną łączną sprzedaż dla lat 2013 i 2014 jako tabelę. Miara w instrukcji DEFINE, Internet Total Sales, jest używana zarówno w wyrażeniach Total Sales i Combined Years Total Sales.

Ocena języka DAX za pomocą defnition miary

Parametry w zapytaniach języka DAX

Dobrze zdefiniowana instrukcja zapytania języka DAX może być sparametryzowana, a następnie używana za pomocą tylko zmian w wartościach parametrów.

Metoda Execute Method (XMLA) ma element kolekcji Parameters Element (XMLA), który umożliwia definiowanie parametrów i przypisywanie wartości. W kolekcji każdy element parametru (XMLA) definiuje nazwę parametru i jego wartość.

Odwołuj się do parametrów XMLA, prefiksując nazwę parametru z znakiem @ . Dowolne miejsce w składni, w której dozwolona jest wartość, wartość można zastąpić wywołaniem parametru. Wszystkie parametry XMLA są wpisywane jako tekst.

Ważne

Parametry zdefiniowane w sekcji parameters i nieużytowane w elemecie <STATEMENT> generują odpowiedź o błędzie w pliku XMLA. Parametry używane i niezdefiniowane w elemecie <Parameters> generują odpowiedź o błędzie w kodzie XMLA.

Instrukcje języka DAX
SUMMARIZECOLUMNS
TREATAS
FILTR