Boş Değerlerle Çalışma

Boş bir değer, belirli bir üyenin, tuple'un veya hücrenin boş olduğunu gösterir. Boş bir hücre değeri, ya belirtilen hücrenin verilerinin altta yatan bilgi tablosunda bulunamadığını ya da belirtilen hücrenin tuple'ının küp için geçerli olmayan bir üye kombinasyonunu temsil ettiğini gösterir.

Note

Boş bir değer, sıfır değerinden farklı olsa da, boş değer genellikle sıfır olarak kabul edilir.

Aşağıdaki sorgu, boş ve sıfır değerlerin davranışını göstermektedir:

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])  

Aşağıdaki bilgiler boş değerler için geçerlidir:

  • IsEmpty fonksiyonu, fonksiyonda belirtilen tuple tanımlanan hücre boş ise TRUE döndürür. Aksi takdirde, fonksiyon FALSE döner.

    Note

    IsEmpty fonksiyonu, bir üye ifadesinin null değer döndürüp dönmediğini belirleyemez. Bir ifadeden bir boş üyenin geri dönüp dönmediğini belirlemek için IS operatörünü kullanın.

  • Boş hücre değeri, sayısal operatörlerden herhangi biri (+, -, *, /) için bir operand olduğunda, diğer operand boş olmayan bir değerse, boş hücre değeri sıfır olarak kabul edilir. Her iki operand da boşsa, sayısal operatör boş hücre değerini döndürür.

  • Boş hücre değeri, dize birleştirme operatörü (+) için bir operand olduğunda, diğer operand boş olmayan bir değerse, boş hücre değeri boş bir dizi olarak kabul edilir. Her iki operand da boşsa, dizi birleştirme operatörü boş hücre değerini döndürür.

  • Boş hücre değeri, karşılaştırma operatörlerinden herhangi biri için bir operand olduğunda (=. <>, >=, <=, >, <), boş hücre değeri, diğer operandın veri tipinin sırasıyla sayısal mı yoksa dizi mi olmasına bağlı olarak sıfır veya boş bir dizi olarak ele alınır. Her iki operand da boşsa, her iki operand da sıfır olarak kabul edilir.

  • Sayısal değerler toplanırken, boş hücre değeri sıfırla aynı yerde toplanır. Boş hücre değeri ile sıfır arasında, boş sıfırdan önce toplanır.

  • Dizi değerleri derlenirken, boş hücre değeri boş diziyle aynı yerde toplanır. Boş hücre değeri ile boş dizim arasında, boş bir dizeme karşı toplanır.

MDX ifadeleri ve küplerinde boş değerlerle başa çıkmak

Çok Boyutlu İfadeler (MDX) ifadelerinde, boş değerler arayabilir ve geçerli (yani boş olmayan) verilere sahip hücrelerde belirli hesaplamalar yapabilirsiniz. Hesaplamalar yapılırken boş değerlerin ortadan kaldırılması önemli olabilir çünkü ortalama gibi bazı hesaplamalar boş hücre değerleri dahil edildiğinde yanlış olabilir.

Eğer alttaki bilgi tablosu verilerinde boş değerler varsa, küp işlendiğinde varsayılan olarak sıfırlara dönüştürülür. Bir ölçüde Null İşleme seçeneğini kullanarak null gerçeklerin 0'a dönüştürülüp dönüştürülmediğini, boş bir değere dönüştürülüp dönüştürülmediğini veya işlem sırasında hata atılıp atılmadığını kontrol edebilirsiniz. Sorgu sonuçlarınızda boş hücre değerlerinin görünmesini istemiyorsanız, boş değerleri ortadan kaldıran veya başka bir değerle değiştiren sorgular, hesaplanan üyeler veya MDX Script ilanları oluşturmalısınız.

Bir sorgudan boş satır veya sütunları kaldırmak için, eksen seti tanımından önce BOŞ OLMAYAN ifadeyi kullanabilirsiniz. Örneğin, aşağıdaki sorgu yalnızca Ürün Kategorisi Bisikletlerini döndürür çünkü 2001 Takvim Yılında satılan tek Kategori budur:

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])  

Daha genel olarak, bir kümeden boş tuple'ları çıkarmak için NonEmpty fonksiyonunu kullanabilirsiniz. Aşağıdaki sorgu, iki hesaplanmış ölçütü gösterir; bunlardan biri Ürün Kategorilerinin sayısını, ikincisi ise ölçüm [İnternet Vergi Miktarı] ve 2001 Takvim Yılı için değeri olan Ürün Kategorilerinin sayısını gösterir:

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]  

Daha fazla bilgi için bkz. NonEmpty (MDX) bölümüdür.

Boş Değerler ve Karşılaştırma Operatörleri

Verilerde boş değerler bulunduğunda, mantıksal ve karşılaştırma operatörleri potansiyel olarak sadece DOĞRU veya YANLIŞ yerine üçüncü bir BOŞ sonuç verebilir. Bu üç değerli mantık gereksinimi birçok uygulama hatasının kaynağıdır. Bu tablolar, boş değer karşılaştırmalarının getirilmesinin etkisini özetler.

Bu tablo, iki Boolean operand'a bir AND operatörü uygulamanın sonuçlarını gösterir.

AND TRUE BOŞ FALSE
TRUE TRUE FALSE FALSE
BOŞ FALSE BOŞ FALSE
FALSE FALSE FALSE FALSE

Bu tablo, iki Boolean operand'a OR operatörü uygulamanın sonuçlarını gösterir.

OR TRUE FALSE
TRUE TRUE TRUE
BOŞ TRUE TRUE
FALSE TRUE FALSE

Bu tablo, NOT operatörünün bir Boolean operatörünün sonucunu nasıl geçersiz kıldığını veya tersine çevirdiğini gösterir.

NOT operatörünün uygulandığı boolean ifadesi Şu şekilde değerlendirilir:
TRUE FALSE
BOŞ BOŞ
FALSE TRUE