다음을 통해 공유


IIf(MDX)

논리 테스트로 확인된 두 값 중 하나를 반환합니다.

구문

IIf(Logical_Expression, Expression1, Expression2)

인수

  • Logical_Expression
    true나 false가 되는 유효한 MDX 논리 식입니다.

  • Expression1
    유효한 MDX 식입니다.

  • Expression2
    유효한 MDX 식입니다.

주의

논리 식으로 지정된 식은 해당 식의 값이 0인 경우에만 false로 평가됩니다. 다른 값은 true로 평가됩니다.

지정된 논리 식이 true가 될 경우 IIf 함수는 첫 번째 식을 반환합니다. 그렇지 않은 경우 이 함수는 두 번째 식을 반환합니다.

지정된 식은 값이나 MDX 개체를 반환할 수 있습니다. 또한 지정된 식은 형식이 일치할 필요가 없습니다.

[!참고]

Microsoft SQL Server 2000에서 Analysis Services는 숫자 및 문자열 반환 형식만 지원했기 때문에 지정된 식의 형식이 동일해야 했습니다. SQL Server Analysis Services에는 이러한 제한 사항이 없습니다.

검색 기준에 따라 멤버 집합을 만드는 데는 IIf 함수 사용을 권장하지 않고 있습니다. 그 대신, Filter 함수를 사용하여 지정한 집합의 각 멤버를 논리 식에 대해 평가하고 멤버의 하위 집합을 반환합니다.

[!참고]

두 식 중 하나가 NULL인 경우 조건을 만족하면 결과 집합은 NULL이 됩니다.

다음 쿼리에서는 계산 측정값 내에 IIF를 사용하여 Internet Sales Amount 측정값이 $10000보다 크거나 작은 경우 서로 다른 두 개의 문자열 값 중 하나를 반환하는 방법을 보여 줍니다.

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]

IIF가 매우 일반적으로 사용되는 경우는 다음 예와 같이 계산 측정값 내에서 '0으로 나누기' 오류를 처리하는 경우입니다.

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

다음은 Generate 함수 내의 두 집합 중 하나를 반환하여 Rows에서 복잡한 튜플 집합을 만드는 IIF의 예입니다.

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

마지막으로 이 예에서는 Plan Hints를 사용하는 방법을 보여 줍니다.

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]

참고 항목

참조