Iıf (MDX)
Bir mantıksal sınama tarafından belirlenen iki değerden birini döndürür.
IIf(Logical_Expression, Expression1 [HINT <hints>], Expression2 [HINT <hints>]) [HINT <hints>]
<hints> ::= <hint> [<hints>]
<hint> ::= EAGER | STRICT | LAZY
Bağımsız değişkenler
Logical_Expression
True veya false sonucunu veren geçerli BIR çok boyutlu deyimler (MDX) mantıksal ifade.Expression1 İPUCU<ipuçları>]
Geçerli BIR çok boyutlu deyimler (MDX) ifade.İPUCU <ipuçları> nasıl ve ne zaman ifade değerlendirilir belirleyen isteğe bağlı bir değiştirici olur. Daha fazla bilgi için Açıklamalar bölümüne bakın.Expression2[HINT <hints>]
Geçerli BIR çok boyutlu deyimler (MDX) ifade.İPUCU <ipuçları> nasıl ve ne zaman ifade değerlendirilir belirleyen isteğe bağlı bir değiştirici olur. Daha fazla bilgi için Açıklamalar bölümüne bakın.
Remarks
Mantıksal bir ifade tarafından belirtilen ifade veren false yalnızca bu ifadenin değeri sıfırsa. Başka bir değer veren true.
Belirtilen mantıksal ifade için değerlendirilirse true, IIf işlev ilk deyimi'ı verir. Aksi durumda işlev, ikinci ifade verir.
Belirtilen ifade, değerleri veya MDX nesnelerini döndürebilir.Ayrıca, belirtilen ifade türü eşleşmek zorunda değil.
Not
In Microsoft SQL Server 2000, Analysis Services supported only numeric and string return types, and the types of specified expressions had to be the same.These restrictions do not apply to SQL Server Analysis Services.
The IIf işlev is not recommended for creating a küme of members based on search criteria. Bunun yerine, Süzgeç işlev belirlenen bir mantık ifadesini karşı her üye değerlendirin ve alt küme küme küme üyesi.
Not
Her iki ifade sonucu NULL olarak değerlendirilirse küme bu koşul karşılandığında NULL olacak.
Plan ipuçları MDX dili ifadeleri değerlendirileceği nasıl alt yapısına belirtmek için bir uzantı var.
EAGER tüm IIF subspace ' değerlendirilecek ifade neden olur.
STRICT ifade için koşul ifadenin sonuçlarını göre yalnızca sonuçlar subspace değerlendirilecek neden olur.
LAZY bir hücrenin hücre modunda değerlendirilecek ifade neden olur.
DINLEYICILERLE ve SıKı ipucu birbirini dışlayan; aynı olan IIF(,,) farklı ifade kullanılabileceğini.
Bkz: SQL Server 2008 Analysis Services'da MDX için performans geliştirmeleri Genişletilmiş bir açıklaması.
Örnekler
Aşağıdaki sorgu basit bir kullanımını gösterir. IIF içinde bir ölçü ınternet satış tutarı daha büyükse, iki farklı bir dize değeri ya da daha az $ 10000 dönmek için hesaplanan bir ölçü birimi:
WITH MEMBER MEASURES.IIFDEMO AS
IIF([Measures].[Internet Sales Amount]>10000
, "Sales Are High", "Sales Are Low")
SELECT {[Measures].[Internet Sales Amount],MEASURES.IIFDEMO} ON 0,
[Date].[Date].[Date].MEMBERS ON 1
FROM [Adventure Works]
Bir çok ortak IIF içinde aşağıdaki örnekte olduğu gibi hesaplanmış ölçüler 'sıfıra bölme' hataları işlemek için kullanılır:
WITH
//Returns 1.#INF when the previous period contains no value
//but the current period does
MEMBER MEASURES.[Previous Period Growth With Errors] AS
([Measures].[Internet Sales Amount]-([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER))
/
([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)
,FORMAT_STRING='PERCENT'
//Traps division by zero and returns null when the previous period contains
//no value but the current period does
MEMBER MEASURES.[Previous Period Growth] AS
IIF(([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)=0,
NULL,
([Measures].[Internet Sales Amount]-([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER))
/
([Measures].[Internet Sales Amount], [Date].[Date].CURRENTMEMBER.PREVMEMBER)
),FORMAT_STRING='PERCENT'
SELECT {[Measures].[Internet Sales Amount],MEASURES.[Previous Period Growth With Errors], MEASURES.[Previous Period Growth]} ON 0,
DESCENDANTS(
[Date].[Calendar].[Calendar Year].&[2004],
[Date].[Calendar].[Date])
ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Subcategory].&[26])
Bir örnek aşağıdadır IIF karmaşık bir dizilerini satır oluşturmak için Oluştur işlevini içinde iki kümesinden döndürülüyor:
SELECT {[Measures].[Internet Sales Amount]} ON 0,
//If Internet Sales Amount is zero or null
//returns the current year and the All Customers member
//else returns the current year broken down by Country
GENERATE(
[Date].[Calendar Year].[Calendar Year].MEMBERS
, IIF([Measures].[Internet Sales Amount]=0,
{([Date].[Calendar Year].CURRENTMEMBER, [Customer].[Country].[All Customers])}
, {{[Date].[Calendar Year].CURRENTMEMBER} * [Customer].[Country].[Country].MEMBERS}
))
ON 1
FROM [Adventure Works]
WHERE([Product].[Product Categories].[Subcategory].&[26])