Bagikan melalui


DAX kueri

Klien pelaporan seperti Power BI and Excel menjalankan kueri DAX setiap kali visual ditampilkan dalam laporan, or bidang yang ditambahkan ke tabel, and kueri DAX ini menyesuaikan saat filter diterapkan. Penganalisis performa di Power BI Desktop dapat menunjukkan kueri DAX ini andeven menjalankannya dalam tampilan kueri DAX.

Dengan menggunakan tampilan kueri di kueri BI Desktop Tulis di layanan BI , Anda dapat membuat menjalankan kueri Anda sendiri. Dengan Microsoft Fabric, Anda dapat lebih meningkatkan produktivitas Anda dengan Copilot untuk menulis kueri DAX dalam tampilan kueri DAX web Desktop or. Selain alat BI , kueri dapat dijalankan di notebook Fabric menggunakan tautan semantik untuk membaca data dari model semantik dengan python, denganExecute Queries REST API , juga tersedia di Automate. Alat lain seperti SQL Server Management Studio (SSMS), Power BI Report Builder, and alat sumber terbuka seperti DAX Studio, juga memungkinkan Anda membuat and menjalankan kueri DAX.

DAX kueri mengembalikan hasil sebagai tabel right dalam alat, memungkinkan Anda membuat and dengan cepat menguji performa rumus DAX Anda dalam langkah-langkah or hanya melihat data dalam model semantik Anda. INFO and INFO. Fungsi VIEW DAX juga bisa mendapatkan informasi tentang model semantik Anda, seperti daftar tabel, kolom, pengukuran, and banyak lagi.

Sebelum mempelajari tentang kueri, penting bahwa Anda memiliki pemahaman yang kuat tentang dasar-dasar DAX. If Anda belum melakukannya, pastikan untuk memeriksa gambaran umum DAX.

Kata kunci

DAX kueri memiliki sintaks sederhana yang terdiri dari hanya satu kata kunci yang diperlukan, EVALUATE. EVALUATE diikuti oleh ekspresi tabel, seperti fungsi DAXor nama tabel, yang saat menjalankan menghasilkan tabel hasil. Ekspresi tabel yang menghasilkan tabel hasil meliputi:

  1. Fungsi DAX umum yang menghasilkan tabel, seperti SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, and banyak lainnya, bekerja dengan EVALUATE untuk menghasilkan tabel hasil.
  2. Tabel dalam model saat dirujuk berdasarkan nama berfungsi dengan EVALUATE untuk menghasilkan tabel hasil yang memperlihatkan data dalam tabel. Misalnya, EVALUATE 'Nama tabel' dapat dijalankan sebagai kueri DAX.
  3. Pengukuran dalam model or rumus DAX apa pun, yang mengembalikan skalar value, bekerja dengan EVALUATE untuk menampilkan value sebagai tabel hasil ketika diapit oleh kurung kurawal. Misalnya, EVALUATE {[Total Sales]}orEVALUATE {COUNTROWS('Sales')} dapat dijalankan sebagai kueri DAX. Ini disebut konstruktor tabel .

Ada beberapa kata kunci opsional khusus untuk kueri DAX: ORDER BY, START AT, DEFINE, MEASURE, VAR, TABLE, and COLUMN.

EVALUATE (Diperlukan)

Pada tingkat paling dasar, kueri DAX adalah pernyataan EVALUATE yang berisi ekspresi tabel. Setidaknya satu pernyataan EVALUATE diperlukan, namun, kueri dapat berisi sejumlah EVALUATEstatements.

Sintaks EVALUATE

EVALUATE <table>

Parameter EVALUATE

Istilah Definisi
table Ekspresi tabel.

Contoh EVALUATE

EVALUATE
	'Sales Order'

Mengembalikan all baris and kolom dari tabel Pesanan Penjualan, sebagai tabel hasil. Ini dapat dibatasi dengan penggunaan TOPNorFILTER, and diurutkan dengan ORDER BY.

Cuplikan layar memperlihatkan cara menggunakan EVALUATE untuk kueri DAX dalam tampilan kueri DAXPower BI Desktop.

ORDER BY (Opsional)

Kata kunci ORDER BY opsional menentukan satu or lebih banyak kolom dalam ekspresi or kueri yang digunakan untuk mengurutkan hasil kueri. Ekspresi apa pun yang dapat dievaluasi untuk setiap baris hasil valid. Kolom apa pun dalam kueri itu sendiri juga valid.

Urutkan menurut properti kolom dalam model semantik not berlaku untuk DAX hasil kueri. If kolom harus diurutkan menurut kolom yang berbeda dalam model, seperti dalam kasus Nama Month, kolom urutkan menurut juga harus disertakan dalam kueri DAX yang akan digunakan dalam ORDER BY.

Sintaks ORDER BY

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

ORDER BY Parameter

Istilah Definisi
expression Ekspresi DAX apa pun yang mengembalikan sebuah skalar valuetunggal, termasuk kolom or dalam kueri DAX.
ASC (default) Urutan urutan naik.
DESC Urutan secara menurun.

Contoh 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

Menampilkan pesanan pakaian andaverage keuntungan per pesanan dengan month, dalam urutan naik berdasarkan month, sebagai tabel hasil.

Cuplikan layar memperlihatkan cara menggunakan ORDER BY untuk kueri DAX dalam tampilan kueri DAXPower BI Desktop.

TOPN not memilih jumlah baris yang ditentukan untuk dikembalikan berdasarkan urutan pengurutan yang ditentukan dalam ORDER BY. Sebagai gantinya, TOPN memiliki sintaksisnya sendiri untuk secara opsional menentukan pengurutan sebelum 100 baris teratas dikembalikan. ORDER BY hanya mengurutkan tabel hasil yang dikembalikan oleh 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

Mengembalikan 100 pesanan penjualan teratas yang diurutkan menurut naik SalesOrderLienKey, lalu mengurutkan hasil first menurut pesanan penjualan, lalu menurut baris pesanan penjualan.

Cuplikan layar memperlihatkan cara menggunakan TOPNandORDER BY untuk kueri DAX dalam tampilan kueri DAXPower BI Desktop.

START AT (Opsional)

Kata kunci START AT opsional digunakan di dalam klausa ORDER BY. Ini menentukan value di mana hasil kueri dimulai.

Sintaks START AT

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

Parameter START AT

Istilah Definisi
value Konstanta value. Tidak dapat berupa ekspresi.
parameter Nama parameter dalam pernyataan XMLA yang diawali dengan karakter @.

START AT Komentar

START AT argumen berkorespondensi satu lawan satu dengan kolom dalam klausa ORDER BY. Dapat ada sebanyak argumen dalam klausa START AT seperti dalam klausa ORDER BY, ditambah not lagi. Argumen first dalam START AT menentukan value awal di kolom 1 dari kolom ORDER BY. Argumen second di START AT menentukan value awal pada kolom 2 dari kolom-kolom ORDER BY dalam baris yang memenuhi firstvalue untuk kolom 1.

Contoh 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"

Mengembalikan kolom all dari tabel Pesanan Penjualan, dalam urutan naik berdasarkan Pesanan Penjualan, dimulai dari SO43661. Baris sebelum pesanan penjualan ini not disertakan dalam tabel hasil.

Cuplikan layar memperlihatkan cara menggunakan ORDER BYandSTART AT untuk kueri DAX dalam tampilan kueri DAXPower BI Desktop.

DEFINE (Opsional)

Kata kunci DEFINE opsional memperkenalkan satu or definisi entitas yang lebih terhitung yang hanya ada untuk duration kueri. Tidak seperti EVALUATE, hanya boleh ada satu blok DEFINE dengan satu definisi tambahan or dalam kueri DAX. DEFINE harus mendahului pernyataan firstEVALUATEand valid untuk allEVALUATEstatements dalam kueri. Definisi dapat berupa variabel, pengukuran, tabel1, kolom and1. Definisi dapat mereferensikan definisi lain yang muncul sebelum or setelah definisi saat ini. Setidaknya satu definisi diperlukan if kata kunci DEFINE disertakan dalam kueri.

DEFINE MEASURE adalah skenario umum untuk membangun langkah-langkah baru or mengedit langkah-langkah yang ada dalam model semantik. Saat measure sudah ada dalam model, kueri DAX akan menggunakan rumus measureDAX yang ditentukan dalam kueri. Ini berguna untuk menguji langkah-langkah dengan kueri DAX sebelum memperbarui model.

DEFINE MEASURE juga berguna untuk membangun analisis tambahan dengan rumus DAX untuk kueri DAX tertentu di mana Anda mungkin not memiliki izin untuk menambahkan model measureor. not perlu untuk memilikinya dalam model.

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

Parameter DEFINE

Istilah Definisi
Entity MEASURE, VAR, TABLE1, or COLUMN1.
name Nama measure, var, tabel, dan definisi kolom or. Ini tidak bisa menjadi ekspresi. Nama not harus unik. Nama hanya ada untuk duration dari kueri.
expression Ekspresi DAX apa pun yang mengembalikan tabel or skalar value. Ekspresi dapat menggunakan salah satu entitas yang ditentukan. If dibutuhkan untuk convert mengubah ekspresi skalar ke dalam ekspresi tabel, membungkus ekspresi di dalam konstruktor tabel dengan kurung kurawal {}, or gunakan fungsi ROW() untuk mengembalikan tabel baris tunggal.

[1]Perhatian: definisi TABLE and COLUMN yang dilingkupi kueri dimaksudkan hanya untuk penggunaan internal. Meskipun Anda dapat define ekspresi TABLE and COLUMN untuk kueri tanpa sintaks error, mereka dapat menghasilkan kesalahan runtime and direkomendasikan not.

DEFINE Komentar

  • Kueri DAX dapat memiliki beberapa EVALUATEstatements, tetapi hanya dapat memiliki satu pernyataan DEFINE. Definisi dalam pernyataan DEFINE dapat berlaku untuk EVALUATEstatements apa pun dalam kueri.

  • Setidaknya satu definisi diperlukan dalam pernyataan DEFINE.

  • Measure definisi untuk ukuran model penimpaan kueri dengan nama yang sama tetapi hanya digunakan dalam kueri. Mereka akan memengaruhi not model measure.

  • nama VAR memiliki batasan unik. Untuk mempelajari lebih lanjut, lihat VAR - Parameter.

Contoh 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]}

Mengembalikan tabel yang didefinisikan dalam kueri DAX untuk menampilkan produk yang belum dibeli dengan kolom tambahan yang merujuk pada variabel yang sudah ditentukan. measure juga didefinisikan and dievaluasi pada count data produk yang belum dibeli.

Cuplikan layar memperlihatkan cara menggunakan DEFINE untuk kueri DAX dalam tampilan kueri DAXPower 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]
	)

Memberikan tabel yang mengevaluasi tiga ukuran yang ditentukan untuk menunjukkan hasil fiskal oleh year. All juga ada dalam model, and Pesanan per Pelanggan dimodifikasi dalam kueri DAX.

Cuplikan layar memperlihatkan cara menggunakan DEFINEMEASURE untuk kueri DAX dalam tampilan kueri DAXPower BI Desktop.

Parameter-parameter dalam kueri DAX

Pernyataan kueri DAX yang ditentukan dengan baik dapat diparameterkan and kemudian digunakan melalui and hanya dengan perubahan dalam parameter values.

Metode Execute Method (XMLA) memiliki elemen pengumpulan Parameters Element (XMLA) yang memungkinkan parameter didefinisikan diberi . Dalam koleksi, setiap elemen Parameter Element (XMLA) mendefinisikan nama parameter ke dalamnya.

Referensi parameter XMLA dengan awalan nama parameter dengan karakter @. Setiap tempat dalam sintaks di mana value diizinkan, value dapat diganti dengan panggilan parameter. All parameter XMLA didefinisikan sebagai teks.

Penting

Parameter yang ditentukan di bagian parameter andnot digunakan dalam elemen <STATEMENT>generate respons error di XMLA. Parameter yang digunakan andnot ditentukan dalam elemen <Parameters>generate respons error di XMLA.

DAX statements SUMMARIZECOLUMNS