문서를 영문으로 보려면 영문 확인란을 선택하세요. 마우스 포인터를 텍스트 위로 이동시켜 팝업 창에서 영문 텍스트를 표시할 수도 있습니다.
번역
영문

IIf(MDX)

Boolean 조건이 true 또는 false인지에 따라 다른 분기 식을 계산합니다.

IIf(Logical_Expression, Expression1 [HINT <hints>], Expression2 [HINT <hints>])

IIf 함수는 세 인수를 사용합니다. iif(<condition>, <then branch>, <else branch>).

Logical_Expression

true (1) 또는 false(0)로 평가되는 조건입니다. 유효한 MDX(Multidimensional Expressions) 논리식이어야 합니다.

Expression1 Hint [Eager|Strict|Lazy]]

논리식이 true로 평가될 때 사용됩니다. Expression1은 유효한 MDX(Multidimensional Expressions) 식이어야 합니다.

Expression2 Hint [Eager|Strict|Lazy]]

논리식이 false로 평가될 때 사용됩니다. Expression2는 유효한 MDX(Multidimensional Expressions) 식이어야 합니다.

논리식에 지정된 조건은 해당 식의 값이 0일 때 false로 평가됩니다. true 로 평가되는 다른 모든 값입니다.

조건이 true이면 IIf함수에서 첫 번째 식을 반환합니다. 그렇지 않은 경우 이 함수는 두 번째 식을 반환합니다.

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

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

참고 참고

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

힌트는 식이 계산되는 방식과 시기를 결정하는 선택적 한정자입니다. 식이 계산되는 방법을 지정하여 기본 쿼리 계획을 재정의할 수 있습니다.

  • EAGER는 원래 IIF 하위 공간으로 식을 계산합니다.

  • STRICT는 논리적 조건식으로 만든 제한된 하위 공간에서만 식을 계산합니다.

  • LAZY는 셀별 모드에서 식을 계산합니다.

EAGER 및 STRICT는 IIF의 then-else 분기에만 적용되지만 LAZY는 모든 MDX 식에 적용됩니다. 모든 MDX 식은 셀별 모드에서 해당 식을 계산하는 HINT LAZY 뒤에 올 수도 있습니다.

EAGER 및 STRICT는 힌트에서 함께 사용할 수 없으며 동일한 IIF(,,)에서 서로 다른 식에 대해 사용할 수 있습니다.

자세한 내용은 SQL Server Analysis Services 2008의 함수 쿼리 힌트MDX IIF 함수 및 CASE 문의 실행 계획 및 계획 힌트를 참조하십시오.

다음 쿼리에서는 계산 측정값 내에 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]

커뮤니티 추가 항목

추가
표시: