Udostępnij za pośrednictwem


DAX zapytania

Klienci raportowania, tacy jak Power BI and Excel, wykonują zapytania DAX za każdym razem, gdy wizualizacje są wyświetlane w raporcie, or pole dodane do tabeli, and te zapytania DAX są dostosowywane po zastosowaniu filter. Analizator wydajności w programie Power BI Desktop może wyświetlać te DAX zapytania i andeven uruchamiać je w widoku zapytań DAX.

Korzystając z widoku zapytań w programie BI Desktop Pisanie zapytań w usłudze BI, można utworzyć uruchamiać własne zapytania . Dzięki microsoft fabricmożesz jeszcze bardziej zwiększyć produktywność dzięki Copilot do zapisywania zapytań DAX w widoku zapytań DAX aplikacji Desktop or Sieci Web. Oprócz narzędzi usługi BI zapytania można uruchamiać w notesach usługi Fabric przy użyciu semantycznego linku odczytywania danych z modeli semantycznych przy użyciu języka Python, za pomocą interfejsuAPI REST Wykonywania zapytań, dostępnego również w usłudze Automate. Inne narzędzia, takie jak SQL Server Management Studio (SSMS), Power BI Report Builder, and narzędzi typu open source, takich jak DAX Studio, umożliwiają również tworzenie and uruchamiania zapytań DAX.

DAX zapytania zwracają wyniki jako tabelę right w narzędziu, co pozwala szybko utworzyć and przetestować wydajność formuł DAX w miarach, or po prostu wyświetlić dane w modelu semantycznym. INFORMACJE and INFO. Funkcje VIEW DAX mogą również uzyskać informacje o modelu semantycznym, takie jak lista tabel, kolumn, miar, and znacznie więcej.

Przed zapoznaniem się z zapytaniami ważne jest, aby mieć dobrą znajomość DAX podstaw. If jeśli jeszcze tego nie zrobiłeś, sprawdź przegląd DAX.

Słowa kluczowe

DAX zapytania mają prostą składnię składającą się tylko z jednego wymaganego słowa kluczowego, EVALUATE. Po EVALUATE następuje wyrażenie tabeli, takie jak funkcja DAX albo nazwa tabeli or, które po uruchomieniu zwracają tabelę wyników. Wyrażenia tabeli, które generują tabelę wyników, obejmują:

  1. Typowe funkcje DAX, które generują tabelę, taką jak SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, and wielu innych, współpracują z EVALUATE, aby wyświetlić tabelę wyników.
  2. Tabele w modelu, do których odwołuje się nazwa, współpracują z EVALUATE do wyprowadzenia tabeli wyników pokazującej dane z tabeli. Na przykład EVALUATE "Nazwa tabeli" można uruchamiać jako zapytanie DAX.
  3. Miary w modelu or dowolnej formuły DAX, która zwraca valueskalarną, współpracują z EVALUATE, aby pokazać value w tabeli wyników, gdy są ujęte w nawiasy klamrowe. Na przykład EVALUATE {[Total Sales]}orEVALUATE {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, TABELA, kolumna and.

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ę EVALUATEstatements.

składnia EVALUATE

EVALUATE <table>

EVALUATE parametry

Termin Definicja
table Wyrażenie tabeli.

Przykład EVALUATE

EVALUATE
	'Sales Order'

Zwraca all wierszy i and kolumn z tabeli Zamówienie sprzedaży jako tabela wyników. Można to ograniczyć, stosując TOPNorFILTER, and posortowane za pomocą ORDER BY.

Zrzut ekranu przedstawiający sposób używania EVALUATE dla zapytania DAX w widoku zapytania DAX w programie Power BI Desktop.

ORDER BY (opcjonalnie)

Opcjonalne słowo kluczowe ORDER BY definiuje o jedną or kolumnę więcej w wyrażeniach zapytania or 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 not ma zastosowanie do wyników zapytania DAX. If kolumnę należy sortować według innej kolumny w modelu, na przykład w przypadku nazwy Month, 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}]}[, …]]

parametry ORDER BY

Termin Definicja
expression Dowolne wyrażenie DAX, które zwraca pojedynczą skalarną kolumnę valueor 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 andaverage zysk na zamówienie według month, w kolejności rosnącej według month, w tabeli wyników.

Zrzut ekranu przedstawiający sposób używania ORDER BY dla zapytania DAX w widoku zapytania DAX w programie Power BI Desktop.

TOPN not wybiera określoną liczbę wierszy do zwrócenia na podstawie określonej w ORDER BYkolejności 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 first według zamówienia sprzedaży, a następnie według linii zamówienia sprzedaży.

Zrzut ekranu przedstawiający sposób używania TOPNandORDER BY dla zapytania DAX w widoku zapytania DAX w programie Power BI Desktop.

START AT (opcjonalnie)

Opcjonalne słowo kluczowe START AT jest używane wewnątrz klauzuli ORDER BY. Definiuje value, od którego 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 value. 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 not więcej. Argument first w START AT definiuje początek value w kolumnie 1 z kolumn ORDER BY. Argument second w START AT definiuje początkową value w kolumnie 2 spośród kolumn ORDER BY, w wierszach spełniających warunki firstivalue dla kolumny 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 kolumny oznaczone jako all z tabeli Zamówienia Sprzedaży w kolejności rosnącej według numery zamówienia, zaczynając od SO43661. Wiersze poprzedzające to zamówienie sprzedaży są not uwzględnione w tabeli wyników.

Zrzut ekranu przedstawiający sposób używania ORDER BYandSTART AT dla zapytania DAX w widoku zapytania DAX w programie Power BI Desktop.

DEFINE (opcjonalnie)

Opcjonalne słowo kluczowe DEFINE wprowadza jedną or więcej definicji jednostek obliczeniowych, które istnieją tylko dla duration zapytania. W przeciwieństwie do EVALUATE, w zapytaniu DAX może być tylko jeden blok DEFINE z jedną dodatkową definicją or. DEFINE musi poprzedzać instrukcję firstEVALUATE, and są prawidłowe dla allEVALUATEstatements w zapytaniu. Definicje mogą być zmiennymi, miarami, tabelami1, and kolumnami1. Definicje mogą odwoływać się do innych definicji, które są wyświetlane przed or po bieżącej definicji. Co najmniej jedna definicja jest wymagana, if słowo kluczowe DEFINE jest zawarte w zapytaniu.

DEFINE MEASURE to typowy przypadek tworzenia nowych miar oraz or edytowania istniejących miar w modelu semantycznym. Gdy measure już istnieje w modelu, zapytanie DAX użyje formuły measureDAX zdefiniowanej w zapytaniu. Jest to przydatne w przypadku testowania miar za pomocą zapytania DAX przed zaktualizowaniem modelu.

DEFINE MEASURE jest również przydatny do budowania dodatkowej analizy z użyciem formuł DAX dla określonego zapytania DAX, gdzie możesz not mieć uprawnienia do dodania modelu measureor jest to not niezbędne, aby mieć to 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, TABLE1, or COLUMN1.
name Nazwa definicji kolumny measure, var, tabeli or. Nie może to być wyrażenie. Nazwa not musi być unikatowa. Nazwa istnieje tylko dla zapytania duration.
expression Dowolne wyrażenie DAX zwracające tabelę orvalueskalarną . Wyrażenie może używać dowolnej ze zdefiniowanych jednostek. If istnieje potrzeba convert wyrażenia skalarnego w wyrażenie tabeli, zawijanie wyrażenia wewnątrz konstruktora tabeli za pomocą nawiasów klamrowych {}, or użyć funkcji ROW(), aby zwrócić pojedynczą tabelę wierszy.

[1]Przestroga: Definicje KOLUMNY w zakresie zapytania dla tabeli and są przeznaczone tylko do użytku wewnętrznego. Chociaż można define wyrażenia TABLE and COLUMN dla zapytania bez składni error, mogą one powodować błędy środowiska uruchomieniowego, notand są zalecane.

DEFINE Uwagi

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

  • Co najmniej jedna definicja jest wymagana w instrukcji DEFINE.

  • Measure definicje dla zapytania zastępują miary modelu o tej samej nazwie, ale są używane tylko w zapytaniu. Będą one not wpływać na model measure.

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

DEFINE przykład

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. measure jest również definiowana and oceniana dla count wierszy niewyprzedanych produktów.

Zrzut ekranu przedstawiający sposób używania DEFINE dla zapytania DAX w widoku zapytania DAX w programie Power BI Desktop.

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 fiskalnego year. All miary istnieją również w modelu, and Zamówienia na klienta są modyfikowane w zapytaniu DAX.

Zrzut ekranu przedstawiający sposób używania DEFINEMEASURE dla zapytania DAX w widoku zapytania DAX programu Power BI Desktop.

Parametry w zapytaniach DAX

Dobrze zdefiniowane zapytanie DAX można sparametryzować and, a następnie używać w and, przy jedynie zmianach w parametrze values.

Metoda execute (XMLA) ma element kolekcji Parameters (XMLA), który umożliwia zdefiniowanie parametrów przypisanych . W kolekcji każdy element parametru (XMLA) definiuje nazwę parametru andvalue.

Odwołuj się do parametrów XMLA, prefiksując nazwę parametru z znakiem @. Dowolne miejsce w składni, gdzie dozwolone jest użycie value, można zastąpić value z wywołaniem parametru. All parametry XMLA są wpisywane jako tekst.

Ważny

Parametry zdefiniowane w sekcji parametrów andnot używane w elemencie <STATEMENT>generate w odpowiedzi error w XMLA. Parametry używane andnot zdefiniowane w elemecie <Parameters>generate odpowiedzi error w języku XMLA.

DAX statements SUMMARIZECOLUMNS