Bagikan melalui


Kueri MDX dan Sumbu Pemotong - Tentukan Konten Sumbu Kueri

Berlaku untuk: SQL Server Analysis Services Azure Analysis Services Fabric/Power BI Premium

Sumbu kueri menentukan tepi sel yang dikembalikan oleh pernyataan SELECT Multidimensional Expressions (MDX). Menentukan tepi sel memungkinkan Anda membatasi data yang dikembalikan yang terlihat oleh klien.

Untuk menentukan sumbu kueri, Anda menggunakan <SELECT query axis clause> untuk menetapkan set ke sumbu kueri tertentu. Setiap <SELECT query axis clause> nilai menentukan satu sumbu kueri. Jumlah sumbu dalam himpunan data sama dengan jumlah <SELECT query axis clause> nilai dalam pernyataan SELECT.

Sintaks Sumbu Kueri

Sintaks berikut menunjukkan sintaks untuk <SELECT query axis clause>:

  
<SELECT query axis clause> ::=  
   [ NON EMPTY ] Set_Expression [ <SELECT dimension property list clause> ] [<HAVING clause>]  
   ON {  
      Integer_Expression |   
      AXIS( Integer_Expression ) |   
      {COLUMNS | ROWS | PAGES | SECTIONS | CHAPTERS}     
      }  
  

Setiap sumbu kueri memiliki angka: nol (0) untuk sumbu x, 1 untuk sumbu y, 2 untuk sumbu z, dan sebagainya. Dalam sintaks untuk <SELECT query axis clause>, Integer_Expression nilai menentukan nomor sumbu. Kueri MDX dapat mendukung hingga 128 sumbu tertentu, tetapi sangat sedikit kueri MDX yang akan menggunakan lebih dari 5 sumbu. Untuk 5 sumbu pertama, alias KOLOM, BARIS, HALAMAN, BAGIAN, dan BAB sebagai gantinya dapat digunakan.

Kueri MDX tidak dapat melewati sumbu kueri. Artinya, kueri yang menyertakan satu atau beberapa sumbu kueri tidak boleh mengecualikan sumbu bernomor lebih rendah atau menengah. Misalnya, kueri tidak boleh memiliki sumbu BARIS tanpa sumbu KOLOM, atau memiliki sumbu KOLOM dan PAGES tanpa sumbu BARIS.

Namun, Anda dapat menentukan klausa SELECT tanpa sumbu apa pun (yaitu, klausa SELECT kosong). Dalam hal ini, semua dimensi adalah dimensi pemotong, dan kueri MDX memilih satu sel.

Dalam sintaks sumbu kueri yang sebelumnya diperlihatkan, setiap Set_Expression nilai menentukan set yang menentukan konten sumbu kueri. Untuk informasi selengkapnya tentang set, lihat Bekerja dengan Anggota, Tuple, dan Set (MDX).

Contoh

Pernyataan SELECT sederhana berikut mengembalikan ukuran Jumlah Penjualan Internet pada sumbu Kolom, dan menggunakan fungsi MDX MEMBERS untuk mengembalikan semua anggota dari hierarki Kalender pada dimensi Tanggal pada sumbu Baris:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,  
{[Date].[Calendar].MEMBERS} ON ROWS  
FROM [Adventure Works]  
  

Dua kueri berikut mengembalikan hasil yang sama persis tetapi menunjukkan penggunaan angka sumbu daripada alias:

SELECT {[Measures].[Internet Sales Amount]} ON 0,  
{[Date].[Calendar].MEMBERS} ON 1  
FROM [Adventure Works]  
  
SELECT {[Measures].[Internet Sales Amount]} ON AXIS(0),  
{[Date].[Calendar].MEMBERS} ON AXIS(1)  
FROM [Adventure Works]  
  

Kata kunci NON EMPTY, yang digunakan sebelum definisi yang ditetapkan, adalah cara mudah untuk menghapus semua tuple kosong dari sumbu. Misalnya, dalam contoh yang telah kita lihat sejauh ini tidak ada data di kubus mulai Agustus 2004 dan seterusnya. Untuk menghapus semua baris dari sel yang tidak memiliki data di kolom apa pun, cukup tambahkan NON EMPTY sebelum set pada definisi sumbu Baris sebagai berikut:

SELECT {[Measures].[Internet Sales Amount]} ON COLUMNS,  
NON EMPTY  
{[Date].[Calendar].MEMBERS} ON ROWS  
FROM [Adventure Works]  
  

NON EMPTY dapat digunakan pada semua sumbu dalam kueri. Bandingkan hasil dari dua kueri berikut, yang pertama tidak menggunakan NON KOSONG dan yang kedua dilakukan pada kedua sumbu:

SELECT {[Measures].[Internet Sales Amount]}   
* [Promotion].[Promotion].[Promotion].MEMBERS  
ON COLUMNS,  
{[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS  
FROM [Adventure Works]  
WHERE([Product].[Subcategory].&[19])  
  
SELECT NON EMPTY {[Measures].[Internet Sales Amount]}   
* [Promotion].[Promotion].[Promotion].MEMBERS  
ON COLUMNS,  
NON EMPTY  
{[Date].[Calendar].[Calendar Year].MEMBERS} ON ROWS  
FROM [Adventure Works]  
WHERE([Product].[Subcategory].&[19])  
  

Klausa HAVING dapat digunakan untuk memfilter konten sumbu berdasarkan kriteria tertentu; ini kurang fleksibel daripada metode lain yang dapat mencapai hasil yang sama, seperti fungsi FILTER, tetapi lebih mudah digunakan. Berikut adalah contoh yang hanya mengembalikan tanggal di mana Jumlah Penjualan Internet lebih besar dari $15.000:

SELECT {[Measures].[Internet Sales Amount]}   
ON COLUMNS,  
NON EMPTY  
{[Date].[Calendar].[Date].MEMBERS}   
HAVING [Measures].[Internet Sales Amount]>15000  
ON ROWS  
FROM [Adventure Works]  
  

Lihat juga

Menentukan Konten Sumbu Pemotong (MDX)