IIf (MDX)
Zwraca jedną z dwóch wartości określanych przez test logiczny.
Składnia
IIf(Logical_Expression, Expression1, Expression2)
Argumenty
Logical_Expression
Prawidłowe wyrażenie logiczne wyrażeń wielowymiarowych (MDX) zwracająca wartość PRAWDA lub FAŁSZ.Expression1
Prawidłowe wyrażenie Multidimensional Expressions (MDX).Expression2
Prawidłowe wyrażenie Multidimensional Expressions (MDX).
Uwagi
Wyrażenie określone przez wyrażenie logiczne przyjmuje false tylko wtedy, gdy wartość wyrażenia jest zero.Wynikiem jest inna wartość true.
Jeśli wynikiem określonego wyrażenia logicznego jest true, IIf funkcja zwraca pierwsze wyrażenie.W przeciwnym wypadku funkcja zwraca drugie wyrażenie.
Wyrażenia określonego może zwracać wartości lub obiekty MDX.Ponadto określonego wyrażenia nie musi być zgodne w polu Typ.
Ostrzeżenie
In Microsoft SQL Server 2000, Usługi 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 Usługi Analysis Services.
IIf Funkcja nie jest zalecany do tworzenia zestaw elementów członkowskich w oparciu o kryteria wyszukiwania.Zamiast tego należy użyć filtru funkcja, aby ocenić każdy element członkowski w określonym zestawie względem wyrażenie logicznego i powrócić podzbiór członków.
Ostrzeżenie
Jeśli albo wyrażenie ma wartość NULL, zestaw wyników będzie równa NULL, po spełnieniu warunku.
Przykłady
Następująca kwerenda zawiera proste użycie IIF wewnątrz miara obliczeniowej, aby zwrócić jedną z dwóch wartości inny ciąg, kiedy miara Internet Sales Amount jest większa lub mniejsza niż 10 000 $:
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]
Jest bardzo powszechnym zastosowaniem IIF obsługi "dzielenie przez zero" błędy w ramach obliczeniowych, jak w następującym przykładzie:
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])
Oto przykład IIF zwracać jeden z dwóch zestawów wewnątrz funkcja Generowanie do tworzenia złożonych zestaw krotek wierszy:
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])
Wreszcie w tym przykładzie przedstawiono sposób użycia Plan wskazówki:
WITH MEMBER MEASURES.X AS
IIF(
[Measures].[Internet Sales Amount]=0
, NULL
, (1/[Measures].[Internet Sales Amount]) HINT EAGER)
SELECT {[Measures].x} ON 0,
[Customer].[Customer Geography].[Country].MEMBERS ON 1
FROM [Adventure Works]