Bagikan melalui


Bekerja dengan Nilai Kosong

Nilai kosong menunjukkan bahwa anggota, tuple, atau sel tertentu kosong. Nilai sel kosong menunjukkan bahwa data untuk sel yang ditentukan tidak dapat ditemukan dalam tabel fakta yang mendasar, atau bahwa tuple untuk sel yang ditentukan mewakili kombinasi anggota yang tidak berlaku untuk kubus.

Catatan

Meskipun nilai kosong berbeda dari nilai nol, nilai kosong biasanya diperlakukan sebagai nol sebagian besar waktu.

Kueri berikut mengilustrasikan perilaku nilai kosong dan nol:

WITH  
//A calculated Product Category that always returns 0  
MEMBER [Product].[Category].[All Products].ReturnZero AS 0  
//Will return true for any null value  
MEMBER MEASURES.ISEMPTYDemo AS ISEMPTY([Measures].[Internet Tax Amount])  
//Will true for any null or zero value  
//To be clear: the expression 0=null always returns true in MDX  
MEMBER MEASURES.IsZero AS [Measures].[Internet Tax Amount]=0  
SELECT  
{[Measures].[Internet Tax Amount],MEASURES.ISEMPTYDemo,MEASURES.IsZero}  
ON COLUMNS,  
[Product].[Category].[Category].ALLMEMBERS  
ON ROWS  
FROM [Adventure Works]  
WHERE([Date].[Calendar].[Calendar Year].&[2001])  

Informasi berikut berlaku untuk nilai kosong:

  • Fungsi IsEmpty mengembalikan TRUE jika dan hanya jika sel yang diidentifikasi oleh tuple yang ditentukan dalam fungsi kosong. Jika tidak, fungsi mengembalikan FALSE.

    Catatan

    Fungsi IsEmpty tidak dapat menentukan apakah ekspresi anggota mengembalikan nilai null. Untuk menentukan apakah anggota null dikembalikan dari ekspresi, gunakan operator IS .

  • Ketika nilai sel kosong adalah operand untuk salah satu operator numerik (+, -, *, /), nilai sel kosong diperlakukan sebagai nol jika operand lainnya adalah nilai yang tidak kosong. Jika kedua operand kosong, operator numerik mengembalikan nilai sel kosong.

  • Ketika nilai sel kosong adalah operand untuk operator perangkaian string (+), nilai sel kosong diperlakukan sebagai string kosong jika operand lain adalah nilai yang tidak kosong. Jika kedua operand kosong, operator penggandaan string mengembalikan nilai sel kosong.

  • Ketika nilai sel kosong adalah operand untuk salah satu operator perbandingan (=. <>, >=, <=, >, ), <nilai sel kosong diperlakukan sebagai nol atau string kosong, tergantung pada apakah jenis data operand lain adalah numerik atau string, masing-masing. Jika kedua operan kosong, kedua operan diperlakukan sebagai nol.

  • Saat menyusun nilai numerik, nilai sel kosong berkolase di tempat yang sama dengan nol. Antara nilai sel kosong dan nol, kolaate kosong sebelum nol.

  • Saat menyusun nilai string, nilai sel kosong berkolase di tempat yang sama dengan string kosong. Antara nilai sel kosong dan string kosong, kosong menyusun sebelum string kosong.

Menangani Nilai Kosong dalam Pernyataan dan Kubus MDX

Dalam pernyataan Ekspresi Multidansa (MDX), Anda dapat mencari nilai kosong lalu melakukan perhitungan tertentu pada sel dengan data yang valid (yaitu, tidak kosong). Menghilangkan nilai kosong saat melakukan penghitungan bisa penting karena perhitungan tertentu, seperti rata-rata, dapat tidak akurat jika nilai sel kosong disertakan.

Jika nilai kosong disimpan dalam data tabel fakta dasar Anda, secara default nilai tersebut akan dikonversi menjadi nol saat kubus diproses. Anda dapat menggunakan opsi Pemrosesan Null pada ukuran untuk mengontrol apakah fakta null dikonversi menjadi 0, dikonversi ke nilai kosong, atau bahkan melempar kesalahan selama pemrosesan. Jika Anda tidak ingin nilai sel kosong muncul di hasil kueri, Anda harus membuat kueri, anggota terhitung, atau pernyataan Skrip MDX yang menghilangkan nilai kosong atau menggantinya dengan beberapa nilai lainnya.

Untuk menghapus baris atau kolom kosong dari kueri, Anda bisa menggunakan pernyataan NON KOSONG sebelum definisi set sumbu. Misalnya, kueri berikut hanya mengembalikan Sepeda Kategori Produk karena itu adalah satu-satunya Kategori yang dijual dalam Tahun Kalender 2001:

SELECT  
{[Measures].[Internet Tax Amount]}  
ON COLUMNS,  
//Comment out the following line to display all the empty rows for other Categories  
NON EMPTY  
[Product].[Category].[Category].MEMBERS  
ON ROWS  
FROM [Adventure Works]  
WHERE([Date].[Calendar].[Calendar Year].&[2001])  

Lebih umumnya, untuk menghapus tuple kosong dari set, Anda dapat menggunakan fungsi NonEmpty. Kueri berikut menunjukkan dua pengukuran terhitung, salah satunya menghitung jumlah Kategori Produk dan yang kedua menunjukkan jumlah Kategori Produk yang memiliki nilai untuk ukuran [Jumlah Pajak Internet] dan Tahun Kalender 2001:

WITH  
MEMBER MEASURES.CategoryCount AS  
COUNT([Product].[Category].[Category].MEMBERS)  
MEMBER MEASURES.NonEmptyCategoryCountFor2001 AS  
COUNT(  
NONEMPTY(  
[Product].[Category].[Category].MEMBERS  
,([Date].[Calendar].[Calendar Year].&[2001], [Measures].[Internet Tax Amount])  
))  
SELECT  
{MEASURES.CategoryCount,MEASURES.NonEmptyCategoryCountFor2001 }  
ON COLUMNS  
FROM [Adventure Works]  

Untuk informasi selengkapnya, lihat NonEmpty (MDX).

Nilai Kosong dan Operator Perbandingan

Ketika nilai kosong ada dalam data, operator logis dan perbandingan berpotensi mengembalikan hasil ketiga DARI EMPTY, bukan hanya TRUE atau FALSE. Kebutuhan untuk logika bernilai tiga ini adalah sumber dari banyak kesalahan aplikasi. Tabel ini menguraikan efek memperkenalkan perbandingan nilai kosong.

Tabel ini memperlihatkan hasil penerapan operator AND ke dua operand Boolean.

AND BENAR KOSONG SALAH
BENAR BENAR SALAH SALAH
KOSONG SALAH KOSONG SALAH
SALAH SALAH SALAH SALAH

Tabel ini memperlihatkan hasil penerapan operator OR ke dua operand Boolean.

ATAU BENAR SALAH
BENAR BENAR BENAR
KOSONG BENAR BENAR
SALAH BENAR SALAH

Tabel ini memperlihatkan bagaimana operator NOT meniadakan, atau membalikkan, hasil operator Boolean.

Ekspresi Boolean tempat operator NOT diterapkan Mengevaluasi ke
BENAR SALAH
KOSONG KOSONG
SALAH BENAR

Lihat Juga

Referensi Fungsi MDX (MDX)
Referensi Operator MDX (MDX)
Ekspresi (MDX)