Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Aplikasi seperti Power BI dan Excel menjalankan kueri DAX setiap kali visual ditampilkan dalam laporan, atau ketika bidang yang ditambahkan ke tabel, dan kueri DAX ini akan menyesuaikan saat filter diterapkan. Penganalisis performa di Power BI Desktop dapat memperlihatkan kueri DAX ini dan bahkan menjalankannya dalam tampilan kueri DAX Power BI Desktop.
Dengan menggunakan DAX di Power BI Desktop atau kueri DAX Tulis di layanan Power BI, Anda bisa membuat dan menjalankan kueri DAX Anda sendiri. Dengan Microsoft Fabric, Anda dapat lebih meningkatkan produktivitas Anda dengan Copilot untuk menulis kueri DAX dalam tampilan kueri DAX Desktop atau web. Selain alat Power BI, kueri DAX dapat dijalankan di notebook Fabric menggunakan tautan semantik untuk membaca data dari model semantik dengan python, dan dengan Execute Queries REST API, juga tersedia di Power Automate. Alat lain seperti SQL Server Management Studio (SSMS), Power BI Report Builder, dan alat sumber terbuka seperti DAX Studio, juga memungkinkan Anda membuat dan menjalankan kueri DAX.
DAX kueri mengembalikan hasil sebagai tabel tepat di dalam alat, memungkinkan Anda untuk dengan cepat membuat dan menguji performa rumus DAX Anda dalam pengukuran atau hanya melihat data dalam model semantik Anda. INFO dan INFO.VIEW DAX juga dapat memberikan informasi tentang model semantik Anda, seperti daftar tabel, kolom, metrik, dan lain sebagainya.
Sebelum mempelajari tentang kueri, penting bahwa Anda memiliki pemahaman yang kuat tentang dasar-dasar DAX. Jika 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 DAX atau nama tabel, yang saat menjalankan menghasilkan tabel hasil. Ekspresi tabel yang menghasilkan tabel hasil meliputi:
- Fungsi DAX umum yang menghasilkan tabel, seperti SUMMARIZE, SUMMARIZECOLUMNS, SELECTCOLUMNS, FILTER, UNION, TOPN, ADDCOLUMNS, DATATABLE, dan banyak lainnya, bekerja dengan EVALUATE untuk menghasilkan tabel hasil.
- 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.
- Ukuran dalam model atau rumus DAX apa pun, yang mengembalikan nilai skalar, bekerja dengan EVALUATE untuk menunjukkan nilai sebagai tabel hasil saat diapit kurung kurawal. Misalnya, EVALUATE {[Total Sales]} atau EVALUATE {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, dan 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 pernyataan EVALUATE.
Sintaks EVALUATE
EVALUATE <table>
Parameter EVALUATE
Istilah | Definisi |
---|---|
table |
Ekspresi pada tabel. |
Contoh EVALUATE
EVALUATE
'Sales Order'
Mengembalikan semua baris dan kolom dari tabel Pesanan Penjualan, sebagai tabel hasil. Ini dapat dibatasi dengan penggunaan TOPN atau FILTER, dan diurutkan dengan ORDER BY.
ORDER BY (Opsional)
Kata kunci ORDER BY
opsional menentukan satu atau beberapa kolom dalam kueri atau ekspresi 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.
Pengurutan berdasarkan properti kolom dalam model semantik tidak diterapkan pada hasil kueri DAX. Jika kolom harus diurutkan menurut kolom lain dalam model, seperti dalam kasus Nama Bulan, 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}]}[, …]]
Parameter ORDER BY
Istilah | Definisi |
---|---|
expression |
Ekspresi DAX apa pun yang mengembalikan nilai skalar tunggal, atau kolom yang disertakan 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 dan laba rata-rata bulanan per pesanan, dalam urutan bulan secara naik, sebagai tabel hasil.
TOPN tidak 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 berdasarkan SalesOrderLienKey secara ascending, kemudian mengurutkan hasilnya terlebih dahulu berdasarkan pesanan penjualan, kemudian berdasarkan baris pesanan penjualan.
START AT (Opsional)
Kata kunci START AT
opsional digunakan di dalam klausa ORDER BY
. Ini menentukan nilai 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 |
Nilai konstanta. 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. Mungkin ada argumen sebanyak mungkin dalam klausa START AT seperti yang ada dalam klausa ORDER BY, tetapi tidak lebih. Argumen pertama dalam START AT menentukan nilai awal di kolom 1 kolom ORDER BY. Argumen kedua dalam START AT menentukan nilai awal di kolom 2 kolom ORDER BY dalam baris yang memenuhi nilai pertama 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 semua kolom dari tabel Pesanan Penjualan, dalam urutan naik menurut Pesanan Penjualan, dimulai pada SO43661. Baris sebelum pesanan penjualan ini tidak disertakan dalam tabel hasil.
DEFINE (Opsional)
Kata kunci DEFINE
opsional memperkenalkan satu atau beberapa definisi entitas terhitung yang hanya ada selama kueri. Tidak seperti EVALUATE
, hanya ada satu blok DEFINE
dengan satu atau beberapa definisi dalam kueri DAX.
DEFINE
harus mendahului pernyataan EVALUATE
pertama dan valid untuk semua pernyataan EVALUATE dalam kueri. Definisi dapat berupa variabel, pengukuran, tabel1, dan kolom1. Definisi dapat mereferensikan definisi lain yang muncul sebelum atau sesudah definisi saat ini. Setidaknya satu definisi diperlukan jika kata kunci DEFINE
disertakan dalam kueri.
DEFINE MEASURE
adalah skenario umum untuk membangun langkah-langkah baru atau mengedit langkah-langkah yang ada dalam model semantik. Ketika ukuran sudah ada dalam model, kueri DAX akan menggunakan rumus dari ukuran DAX 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 tidak memiliki izin untuk menambahkan ukuran model atau tidak perlu 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, atau COLUMN1. |
name |
Nama pengukuran, var, tabel, atau definisi kolom. Ini tidak bisa menjadi ekspresi. Nama tidak harus unik. Nama hanya ada selama pencarian dilakukan. |
expression |
Ekspresi DAX apa pun yang mengembalikan tabel atau nilai skalar. Ekspresi dapat menggunakan salah satu entitas yang ditentukan. Jika ada kebutuhan untuk mengonversi ekspresi skalar menjadi ekspresi tabel, bungkus ekspresi di dalam konstruktor tabel dengan kurung kurawal {} , atau gunakan fungsi ROW() untuk mengembalikan tabel baris tunggal. |
[1]Perhatian: definisi TABEL dan KOLOM yang dilingkup kueri dimaksudkan hanya untuk penggunaan internal. Meskipun Anda dapat menentukan ekspresi TABLE dan COLUMN untuk kueri tanpa kesalahan sintaks, ekspresi tersebut dapat menghasilkan kesalahan runtime dan tidak disarankan.
DEFINE Komentar
Kueri DAX bisa memiliki beberapa pernyataan EVALUATE, tetapi hanya bisa memiliki satu pernyataan DEFINE. Definisi dalam pernyataan DEFINE dapat berlaku untuk pernyataan EVALUATE apa pun dalam kueri.
Setidaknya satu definisi diperlukan dalam pernyataan DEFINE.
Definisi pengukuran untuk kueri menggantikan pengukuran model dengan nama yang sama tetapi hanya digunakan dalam kueri tersebut. Mereka tidak akan memengaruhi pengukuran model.
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. Ukuran juga didefinisikan dan dievaluasi untuk menghitung jumlah produk yang tidak terbeli.
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]
)
Mengembalikan tabel yang mengevaluasi tiga pengukuran yang ditentukan untuk memperlihatkan hasilnya menurut tahun fiskal. Semua ukuran juga ada dalam model, dan Pesanan per Pelanggan dimodifikasi dalam kueri DAX.
Parameter-parameter dalam kueri DAX
Pernyataan kueri DAX yang terdefinisi dengan baik dapat diparameterkan lalu digunakan berulang-ulang hanya dengan perubahan nilai parameter.
Metode Execute Method (XMLA) memiliki elemen koleksi Parameters Element (XMLA) yang memungkinkan parameter ditentukan dan dapat diberikan nilai. Dalam koleksi, setiap Parameter Element (XMLA) mendefinisikan nama parameter dan nilai untuk parameter tersebut.
Referensi parameter XMLA dengan awalan nama parameter dengan karakter @
. Setiap tempat dalam sintaks di mana nilai diizinkan, nilai dapat diganti dengan panggilan parameter. Semua parameter XMLA di ketik sebagai teks.
Penting
Parameter yang ditentukan di bagian parameter dan tidak digunakan dalam elemen <STATEMENT>
menghasilkan respons kesalahan di XMLA.
Parameter yang digunakan dan tidak ditentukan dalam elemen <Parameters>
menghasilkan respons kesalahan di XMLA.