다음을 통해 공유


빈 값 작업

빈 값은 특정 멤버, 튜플 또는 셀이 비어 있음을 나타냅니다. 빈 셀 값은 기본 팩트 테이블에서 지정된 셀의 데이터를 찾을 수 없거나 지정된 셀의 튜플이 큐브에 적용되지 않는 멤버 조합을 나타낸다는 것을 나타냅니다.

참고 항목

빈 값은 0 값과 다르지만 빈 값은 일반적으로 대부분의 경우 0으로 처리됩니다.

다음 쿼리는 빈 값과 0 값의 동작을 보여 줍니다.

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

다음 정보는 빈 값에 적용됩니다.

  • IsEmpty 함수는 함수에 지정된 튜플로 식별된 셀이 비어 있는 경우에만 TRUE를 반환 합니다. 그렇지 않으면 함수는 FALSE를 반환합니다.

    참고 항목

    IsEmpty 함수는 멤버 식이 null 값을 반환하는지 여부를 확인할 수 없습니다. 식에서 null 멤버가 반환되는지 여부를 확인하려면 IS 연산자를 사용합니다.

  • 빈 셀 값이 숫자 연산자(+, -, *, /) 중 하나에 대한 피연산자인 경우 다른 피연산자가 비어 있지 않은 값이면 빈 셀 값이 0으로 처리됩니다. 두 피연산자 모두 빈 경우 숫자 연산자는 빈 셀 값을 반환합니다.

  • 빈 셀 값이 문자열 연결 연산자(+)의 피연산자인 경우 다른 피연산자가 비어 있지 않은 값이면 빈 셀 값이 빈 문자열로 처리됩니다. 두 피연산자 모두 빈 경우 문자열 연결 연산자는 빈 셀 값을 반환합니다.

  • 빈 셀 값이 비교 연산자 중 하나에 대한 피연산자(=. <>=>, =, <>, , ) <인 경우 다른 피연산자의 데이터 형식이 각각 숫자인지 문자열인지에 따라 빈 셀 값이 0 또는 빈 문자열로 처리됩니다. 두 피연산자 모두 빈 경우 두 피연산자 모두 0으로 취급합니다.

  • 숫자 값을 정렬할 때는 빈 셀 값이 0과 동일한 위치에서 정렬됩니다. 빈 셀 값과 0 사이의 빈 데이터 정렬은 0보다 앞입니다.

  • 문자열 값을 정렬할 때는 빈 셀 값이 빈 문자열과 동일한 위치에서 정렬됩니다. 빈 셀 값과 빈 문자열 사이에 빈 문자열 앞에 빈 데이터 정렬이 표시됩니다.

MDX 문과 큐브에서의 빈 값 처리

MDX(다차원 식) 문에서 빈 값을 찾은 다음 유효한(즉, 비어 있지 않음) 데이터가 있는 셀에 대해 특정 계산을 수행할 수 있습니다. 계산을 수행할 때 빈 값을 제거하는 것이 중요할 수 있습니다. 빈 셀 값이 포함된 경우 평균과 같은 특정 계산이 정확하지 않을 수 있기 때문입니다.

빈 값이 기본 팩트 테이블 데이터에 저장되어 있는 경우 이러한 값은 기본적으로 큐브가 처리될 때 0으로 변환됩니다. 측정값에서 Null 처리 옵션을 사용하여 null 팩트를 0으로 변환하거나, 빈 값으로 변환하거나, 처리 중에 오류를 throw하는지 여부를 제어할 수 있습니다. 쿼리 결과에 빈 셀 값이 표시되지 않도록 하려면 빈 값을 제거하거나 다른 값으로 바꾸는 쿼리, 계산 멤버 또는 MDX 스크립트 문을 만들어야 합니다.

쿼리에서 빈 행 또는 열을 제거하려면 축 집합 정의 앞에 NON EMPTY 문을 사용합니다. 예를 들어 다음 쿼리는 2001년에 판매된 유일한 범주이므로 Product Category Bikes만 반환합니다.

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

더 일반적으로 집합에서 빈 튜플을 제거하려면 NonEmpty 함수를 사용합니다. 다음 쿼리는 두 개의 계산 측정값을 보여 줍니다. 그 중 하나는 제품 범주 수를 계산하고 두 번째 측정값은 [인터넷 세금 금액] 및 2001년도 측정값을 포함하는 제품 범주 수를 보여 줍니다.

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]

자세한 내용은 NONEmpty(MDX)를 참조하세요.

빈 값 및 비교 연산자

데이터에 빈 값이 있는 경우 논리 및 비교 연산자는 TRUE 또는 FALSE 대신 EMPTY의 세 번째 결과를 반환할 수 있습니다. 이와 같이 세 가지 결과를 가져오는 논리는 대부분 애플리케이션에서 오류의 원인이 됩니다. 이러한 표에서는 빈 값 비교를 도입하는 효과를 간략하게 설명합니다.

이 표에서는 두 부울 피연산자에 AND 연산자를 적용한 결과를 보여 줍니다.

AND TRUE EMPTY FALSE
TRUE TRUE FALSE FALSE
FALSE EMPTY FALSE
FALSE 거짓 거짓 FALSE

이 표에서는 두 부울 피연산자에 OR 연산자를 적용한 결과를 보여 줍니다.

또는 TRUE 거짓
TRUE TRUE TRUE
TRUE TRUE
FALSE TRUE FALSE

이 테이블에서는 NOT 연산자가 부정하거나 반대로 바꾼 부울 연산자의 결과를 보여 줍니다.

NOT 연산자가 적용되는 부울 식 결과
TRUE FALSE
EMPTY EMPTY
FALSE TRUE

참고 항목

MDX 함수 참조(MDX)
MDX 연산자 참조(MDX)
식(MDX)