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
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:
- 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.
- 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.
- 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.
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.
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.
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.
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 firstEVALUATE
and 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.
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.
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
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.