TIBCO Cloud™ Spotfire® 웹 클라이언트 사용 설명서

조건에 기반한 계산된 컬럼

컬럼을 계산할 때 특정 조건의 충족 여부에 따라 표현식의 결과가 달라져야 하는 경우가 있습니다. 조건은 논리 함수 If() 또는 Case()를 사용하여 표현식에서 설정합니다.

If()

If() 함수를 사용할 때는 true 또는 false인 조건을 지정하고, 조건이 true일 때 반환할 항목과 false일 때 반환할 항목을 차례로 지정합니다.

다음 표현식의 의미는 아래와 같습니다.

If(([Amount]<10),"low","high")

컬럼 'Amount'의 행 값이 10보다 작은 경우 값 'low'가 결과로 반환되지만, 값이 10 이상인 경우에는 값 'high'가 반환됩니다.

즉, 아래와 같습니다.



다른 말로 하면 If() 함수는 행을 두 그룹으로 나눕니다. 하나의 그룹은 지정된 조건이 true인('low'를 결과로 반환) 행으로 구성되며, 다른 그룹은 지정된 조건이 false인('high'를 결과로 반환) 행으로 구성됩니다.

주:

반환될 값이 집계된 값인 경우 두 그룹은 따로 처리됩니다. 아래 테이블에서 다음 표현식이 추가된 예제를 볼 수 있습니다.

If(([Amount]<10),Avg([Amount]),Avg([Amount]))

이 표현식에는 평균 집계가 포함되어 있습니다. 이 경우 두 그룹 모두에 동일한 집계가 지정되었지만 서로 다른 집계를 사용할 수도 있습니다.



행 값이 10 미만인 경우, 즉 'true' 그룹의 경우에는 평균 6이 반환되며((5+7)/2), 'false' 그룹의 경우에는 평균 13((14+10+15)/3)이 반환됩니다.

if() 함수를 and 또는 or와 결합하여 사용할 수도 있습니다. 예를 들어

If(([Customer age]<20) and ([Gender]="Female"),"girl","other")

표현식은 아래의 추가된 계산된 컬럼으로 나타납니다.



Case()

조건 결과가 true 및 false로 제한되지 않는 표현식을 작성하려면 case() 함수를 사용할 수 있습니다. Case()는 두 가지 형식으로 사용할 수 있으며 아래에서 예제를 사용하여 모두 설명합니다.

예제 1

아래의 책과 비디오 가격이 각각 10%와 50% 할인되어 가격 목록을 업데이트해야 한다고 가정하겠습니다.



제품 유형에 따라 할인율이 다르기 때문에 case() 표현식을 사용하여 새 가격을 계산합니다.

case [Type]
when "Book" then [Price]*0.9
when "Video" then [Price]*0.5
else [Price]
end


여기서 case()는 'Type'을 표현식의 when 옵션 각각과 비교합니다.

예제 2

두 번째 예제에서는 case()를 사용하여 학생들의 시험 결과를 평가합니다. 평가 수준에는 Failed(총계가 100 미만), Passed 및 Excellent(총계가 160 이상)의 세 가지 수준이 있습니다.



이 예제의 Case()는 각 when 옵션마다 독립적으로 조건을 평가합니다.

case  
when ([Test A] + [Test B])<100 then "Failed" 
when ([Test A] + [Test B])>=160 then "Excellent"
else "Passed"
end

이 방법을 사용하면 예제 1에서보다 복잡한 조건을 구현할 수 있습니다.

결과 계산된 컬럼은 아래와 같습니다.



주:case() 양식 모두에서 여러 개의 when/then 조건을 표현식에 포함할 수 있습니다.

조건 실행 순서

case() 표현식의 여러 부분은 위에서 아래 순서로 실행됩니다. 아래의 표현식과 결과 컬럼을 참조하십시오.

case
when [Number]<40 then "yes"
when [Number]<70 then "no"
else "x"
end


40 미만인 숫자는 'yes'로 설정되며 변경되지 않습니다. 70 미만의 숫자를 'no'로 설정하는 표현식의 다음 부분은 나머지 행에만 영향을 줍니다.