Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Klienci raportowania, tacy jak Power BI i Excel, wykonują zapytania DAX za każdym razem, gdy wizualizacje są wyświetlane w raporcie lub pole dodane do tabeli, a te DAX zapytania są dostosowywane po zastosowaniu filtru. Analizator wydajności w programie Power BI Desktop może wyświetlać te DAX zapytania, a nawet uruchamiać je w DAX widoku zapytań programu Power BI Desktop.
Korzystając z widoku zapytań DAX w programie Power BI Desktop lub tworząc zapytania DAX w usłudze Power BI, można tworzyć i uruchamiać własne zapytania DAX. Dzięki usłudze Microsoft Fabric możesz jeszcze bardziej zwiększyć produktywność dzięki funkcji Copilot do pisania DAX zapytań w DAX widoku zapytań pulpitu lub sieci Web. Oprócz narzędzi DAX usługi Power BI zapytania można uruchamiać w notatnikach Fabric przy użyciu łącza semantycznego w celu odczytywania danych z modeli semantycznych przy użyciu języka Python oraz interfejsu API REST do wykonywania zapytań, dostępnego również w usłudze Power Automate. Inne narzędzia, takie jak SQL Server Management Studio (SSMS), program Power BI Report Builderi narzędzia open source, takie jak DAX Studio, umożliwiają również tworzenie i uruchamianie zapytań DAX.
DAX Zapytania zwracają wyniki jako tabelę bezpośrednio w narzędziu, umożliwiając szybkie tworzenie i testowanie wydajności formuł DAX w kontekście miar albo po prostu przeglądanie danych w modelu semantycznym. Funkcje INFO i INFO.VIEW DAX mogą również pozyskiwać informacje o modelu semantycznym, takie jak lista tabel, kolumn, miar i wiele innych elementów.
Przed zapoznaniem się z zapytaniami ważne jest, aby mieć solidną znajomość DAX podstaw. Jeśli jeszcze tego nie zrobiono, zapoznaj się z DAX omówieniem.
Słowa kluczowe
DAX zapytania mają prostą składnię składającą się tylko z jednego wymaganego słowa kluczowego, EVALUATE. EVALUATE jest poprzedzone wyrażeniem tabeli, takim jak funkcja DAX lub nazwa tabeli, które po uruchomieniu generują tabelę wyników. Wyrażenia tabeli, które generują tabelę wyników, obejmują:
- Typowe funkcje DAX, które wyprowadzą tabelę, taką jak SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLEi wiele innych, współpracują z EVALUATE, aby wyświetlić tabelę wyników.
- Tabele w modelu, do których odnosi się nazwa, współpracują z elementem EVALUATE w celu wyświetlenia tabeli wyników pokazującej dane zawarte w tabeli. Na przykład EVALUATE "Nazwa tabeli" można uruchamiać jako zapytanie DAX.
- Miary w modelu lub dowolnej DAX formule, która zwraca wartość skalarną, działają z elementem EVALUATE, aby pokazać wartość jako tabelę wyników, gdy są ujęte w nawiasy klamrowe. Na przykład EVALUATE {[Total Sales]} lub EVALUATE {COUNTROWS('Sales')} można uruchamiać jako zapytanie DAX. Są one nazywane konstruktorami tabel .
Istnieje kilka opcjonalnych słów kluczowych specyficznych dla zapytań DAX: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE i COLUMN.
EVALUATE (wymagane)
Na najbardziej podstawowym poziomie zapytanie 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>
EVALUATE Parametry
| Termin | Definicja |
|---|---|
table |
Wyrażenie tabeli. |
Przykład EVALUATE
EVALUATE
'Sales Order'
Zwraca wszystkie wiersze i kolumny z tabeli Sales Order (Zamówienie sprzedaży) jako tabelę wynikową. To można ograniczyć za pomocą TOPN lub FILTER, a posortować za pomocą ORDER BY.
ORDER BY (opcjonalnie)
Opcjonalne słowo kluczowe ORDER BY definiuje co najmniej jedną kolumnę w zapytaniu lub wyrażeniach używanych do sortowania wyników zapytania. Każde wyrażenie, które można ocenić dla każdego wiersza wyniku, jest prawidłowe. Każda kolumna w samym zapytaniu jest również prawidłowa.
Sortowanie według właściwości kolumny w modelach semantycznych nie ma zastosowania do DAX wyników zapytania. Jeśli kolumna powinna być sortowana według innej kolumny w modelu, na przykład w przypadku nazwy miesiąca, sortowanie według kolumny powinno być również uwzględnione w zapytaniu DAX, które ma być używane w ORDER BY.
składnia ORDER BY
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]]
ORDER BY Parametry
| Termin | Definicja |
|---|---|
expression |
Dowolne wyrażenie DAX zwracające pojedynczą wartość skalarną lub kolumnę zawartą w zapytaniu DAX. |
ASC |
(ustawienie domyślne) Rosnąca kolejność sortowania. |
DESC |
Kolejność sortowania malejącego. |
Przykład ORDER BY
EVALUATE
SUMMARIZECOLUMNS(
// Group by columns
'Date'[Month Name],
'Date'[Month of Year],
'Product'[Category],
// Optional filters
FILTER(
VALUES('Product'[Category]),
[Category] = "Clothing"
),
// Measures or explicit DAX formulas to aggregate and analyze the data by row
"Orders", [Orders],
"Avg Profit per Order", DIVIDE(
[Total Sales Profit],
[Orders]
)
)
// DAX queries do not use sort order defined in Power BI,
// sort by columns must be included in the DAX query to be used in order by
ORDER BY 'Date'[Month of Year] ASC
Zwraca zamówienia odzieży oraz średni zysk na zamówienie w podziale na miesiące, w kolejności rosnącej, w formie tabeli wynikowej.
TOPN nie wybiera określonej liczby wierszy do zwrócenia w oparciu o określony w ORDER BY porządek sortowania. Zamiast tego TOPN ma własną składnię, aby opcjonalnie określić sortowanie przed zwróceniem pierwszych 100 wierszy. ORDER BY sortuje tylko tabelę wyników zwracaną przez TOPN.
EVALUATE
TOPN(
100,
'Sales Order',
// The way the data is sorted before the top 100 rows are selected
'Sales Order'[SalesOrderLineKey], ASC
)
// The way the data is sorted for the results
ORDER BY
'Sales Order'[Sales Order] ASC,
'Sales Order'[Sales Order Line] ASC
Zwraca 100 pierwszych zamówień sprzedaży posortowanych według kolumny SalesOrderLienKey rosnąco, a następnie sortuje wyniki najpierw według zamówienia sprzedaży, a następnie według wiersza zamówienia sprzedaży.
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.
składnia START AT
EVALUATE <table>
[ORDER BY {<expression> [{ASC | DESC}]}[, …]
[START AT {<value>|<parameter>} [, …]]]
START AT Parametry
| Termin | Definicja |
|---|---|
value |
Stała wartość. Nie może być wyrażeniem. |
parameter |
Nazwa parametru w instrukcji XMLA poprzedzona znakiem @. |
START AT Uwagi
START AT argumenty 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 START AT definiuje wartość początkową w kolumnie 1 kolumny ORDER BY. Drugi argument w START AT definiuje wartość początkową w kolumnie 2 w ORDER BY wierszach spełniających warunek dla pierwszej wartości w kolumnie 1.
Przykład START AT
EVALUATE
'Sales Order'
ORDER BY 'Sales Order'[Sales Order] ASC
// Start at this order, orders before this order will not be displayed
START AT "SO43661"
Zwraca wszystkie kolumny z tabeli Sales Order (Zamówienie sprzedaży) w kolejności rosnącej, rozpoczynając od SO43661. Wiersze przed tym zamówieniem sprzedaży nie są uwzględniane w tabeli wyników.
DEFINE (opcjonalnie)
Opcjonalne słowo kluczowe DEFINE wprowadza co najmniej jedną definicję jednostki obliczeniowej, która istnieje tylko przez czas trwania zapytania. W przeciwieństwie do EVALUATEmoże istnieć tylko jeden blok DEFINE z co najmniej jedną definicją w zapytaniu DAX.
DEFINE musi poprzedzać pierwszą instrukcję EVALUATE i są prawidłowe dla wszystkich instrukcji EVALUATE w zapytaniu. Definicje mogą być zmiennymi, miarami, tabelami1i 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.
DEFINE MEASURE jest typowym scenariuszem tworzenia nowych miar lub edytowania istniejących miar w modelu semantycznym. Gdy miara już istnieje w modelu, zapytanie DAX użyje miary DAX formuły zdefiniowanej w zapytaniu. Jest to przydatne w przypadku testowania miar za pomocą zapytania DAX przed zaktualizowaniem modelu.
DEFINE MEASURE jest również pomocna w tworzeniu dodatkowej analizy przy użyciu formuł DAX dla określonego zapytania DAX, w którym być może nie masz uprawnień do dodawania miary modelu lub nie jest konieczne jej posiadanie w modelu.
składnia DEFINE
[DEFINE
(
(MEASURE <table name>[<measure name>] = <scalar expression>) |
(VAR <var name> = <table or scalar expression>) |
(TABLE <table name> = <virtual table definition>) |
(COLUMN <table name>[<column name>] = <scalar expression>) |
) +
]
(EVALUATE <table expression>) +
DEFINE Parametry
| Termin | Definicja |
|---|---|
Entity |
MEASURE, VAR, TABLE1lub COLUMN1. |
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. |
expression |
Dowolne wyrażenie 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, zawiń wyrażenie wewnątrz konstruktora tabeli za pomocą nawiasów klamrowych {}lub użyj funkcji ROW(), aby zwrócić tabelę z jednym wierszem. |
[1]Przestroga: Definicje tabel i kolumn dotyczące zakresu 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.
DEFINE Uwagi
Zapytanie 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.
VAR nazwy mają unikatowe ograniczenia. Aby dowiedzieć się więcej, zobacz VAR — parametry.
Przykład DEFINE
DEFINE
VAR _firstyear = MIN('Date'[Fiscal Year])
VAR _lastyear = MAX('Date'[Fiscal Year])
TABLE 'Unbought products' = FILTER('Product', [Orders] + 0 = 0)
COLUMN 'Unbought products'[Year Range] = _firstyear & " - " & _lastyear
MEASURE 'Unbought products'[Unbought products] = COUNTROWS('Unbought products')
EVALUATE
'Unbought products'
EVALUATE
{[Unbought products]}
Zwraca tabelę zdefiniowaną w zapytaniu DAX, aby wyświetlić niekupione produkty z dodatkową kolumną odwołującą się do zdefiniowanych zmiennych. Miara jest również definiowana i oceniana w celu zliczania wierszy produktów, które nie zostały kupione.
DEFINE
MEASURE 'Pick a sales measure'[Orders] = DISTINCTCOUNT('Sales Order'[Sales Order])
MEASURE 'Pick a sales measure'[Customers] = CALCULATE(
COUNTROWS(Customer),
FILTER(
'Sales',
[Orders] > 0
)
)
MEASURE 'Pick a sales measure'[Orders per Customer] = DIVIDE(
[Orders],
[Customers],
0
)
EVALUATE
SUMMARIZECOLUMNS(
'Date'[Fiscal Year],
"Orders", [Orders],
"Customers", [Customers],
"Orders per Customer", [Orders per Customer]
)
Zwraca tabelę oceniając trzy zdefiniowane miary, aby pokazać wyniki według roku obrachunkowego. Wszystkie miary istnieją również w modelu, a zamówienia na jednego klienta są modyfikowane w zapytaniu DAX.
Parametry w zapytaniach DAX
Dobrze zdefiniowana instrukcja zapytania DAX może być sparametryzowana, a następnie używana wielokrotnie przy zmianach tylko wartości parametrów.
Metoda Execute Method (XMLA) ma w kolekcji element Parameters Element (XMLA), który umożliwia definiowanie parametrów i przypisywanie im 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żny
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.
Powiązana zawartość
oświadczenia DAXSUMMARIZECOLUMNS