본문 바로가기
Data Analysis/Spotfire

[TIBCO Spotfire] Calculated Column (1/2)

by 불탄오징어 2019. 7. 17.
반응형

 

3-1. Calculated Column


Calculated Column은 기존 칼럼들을 조합, 계산식, 함수를 통해 값을 만들거나 임의 값을 부여하는 등 새로운 칼럼을 생성할 수 있는 기능입니다. 간단하게는 단순연산, 컬럼형식 변환, 코드에 대한 코드값 표기, 수치값에 대한 명목형 변수등 다양하게 활용할 수 있으며 응용하기에 따라 사용자의 수준을 갸늠할 수 있는 기능입니다. 해당 기능은 상단 메뉴 Insert - Calculated Column으로 실행할 수 있습니다.

 

3-1-1. 화면 구성

 

Calculated Column은 위와 같은 화면 구조를 가지고 있습니다.

 

  • Data Table : 이부분은 Spotfire 내에 여러개의 Data Table이 있으면 뜨는 부분입니다. 어떤 Data Table에 적용할지 결정합니다.
  • Available columns :  해당 Data Table의 Column들이 출력됩니다. 아래 Insert Columns를 눌러서 Expression에 삽입할 수 있으며 더블 클릭을 통해서도 가능합니다.
  • Available properties for Columns : Spotfire 내에 설정가능한 properties(전역변수로 생각하시면 됨)들의 목록이 출력됩니다. 보통 properties에 control을 붙여서 가변 값을 받아올 때 사용합니다.
  • Functions : Calculated Column에서 사용가능한 함수 목록이 있습니다. 바로 아래에는 간단한 설명을 확인 할 수 있습니다.
  • Expression : 실제 표현식을 적는 곳입니다.
  • Recent expression :  가장 최근에 작성한 표현식들의 목록을 확인하고 바로 적용할 수 있습니다.
  • Column name : 새로 추가할 칼럼의 명을 작성합니다.
  • Sample result : 새로 추가할 칼럼에 들어갈 값을 예시형태로 보여줍니다. 문제가 있을 경우에는 #Error라고 표시됩니다.

 

3-1-2. 함수 ( Function )

Calculated Column에 사용되는 표현식은 SQL과 엑셀의 함수구분을 섞어놓은 듯한 양식을 가집니다. 예를 들어 조건문을 적용한다고 하면 아래와 같이 작성이 가능합니다.

 

# if문(Excel과 동일)
if([value] = 1, true, false)

# CASE 문(SQL과 동일)
CASE WHEN [value] = 1 THEN true ELSE false END

 

위의 예시와 같이 동일한 용도의 구문이지만 Excel과 SQL을 혼용하고 있습니다. 그덕에 어느정도 데이터를 다루거나 분석한 사용자의 경우 쉽게 적응이 가능합니다.

 

 

함수는 위에서 보는 바와 같이 총 12개 카테고리로 구성되어있습니다. 각 함수를 모두 다루기에는 그양이 너무 방대하여 제 기준에서 주로 사용하는 함수들 위주로 설명을 드리겠습니다.

 

1) Conversion function

  # 칼럼을 정수로 변환한다.
  Integer([value]) 

  # 칼럼을 문자형으로 변환한다.
  String([value]) 
  
  # 칼럼을 실수형으로 변환한다.
  Real([value])

  # 칼럼을 Date형으로 변환한다.
  Date([value])

  # 칼럼을 Datetime 형으로 변환한다.
  Datetime([value]) 

  # 칼럼에서 주어진 양식 기준으로 Date, Date Time 형태로 변환한다.
  # Parsedate("2019-01-01", "yyyy-MM-dd")
  #   yyyy : 4자리 년도
  #   MM  : 2자리 월
  #   dd  : 2자리 일자
  Parsedate([value], '양식') 
       

 

 

2) Date and Time function

  # 칼럼에 대해서 주어진 양식을 정수만큼 더한 날짜를 반환한다.
  # 예시 : DateAdd('year', 3, [value]) 
  # 양식 :  year, month, day 등
  DateAdd('양식', 정수, [value])
       
  # 두 날짜 칼럼 간에 차이를 구한다. 단 주어진 양식에 대한 차이로 계산함
  # 예시 : DateDiff('year',  [value1], [value2]) 
  # 양식 :  year, month, day 등
  Datediff('양식', [value1], [value2])  

   

 

3) Logical function

  # 조건문 if
  # if (조건식, 참일 때 값, 거짓일 때 값)
  if ( 1 < 2, "Small", "Big"
  
  # 조건문 CASE WHEN
  # CASE WHEN 조건문1 THEN 값1
  #      WHEN 조건문2 THEN 값2
  #                   ELSE 값3 END
  Case when 1 < 2 then "a" when 1 < 3 then "b" else "c" end
  Case [Column] when 3 then "a" when 2 then "b" else "c" end
  
  # IS NULL
  # 주어진 칼럼이 NULL인지 판단하는 표현식
  # 
  If( [Column] Is Null, true, false )
  Case when [Column] Is Null then true else false end
  
  # IS NOT NULL
  # 주어진 칼럼이 NULL이 아닌지를 판단하는 표현식
  If( [Column] Is Not Null, true, false )
  Case when [Column] Is Not Null then true else false end
  

 

4) Ranking function

  # 값에 대해서 순위를 메기는 함수
  # , 이후 주어지는 값들은 모두 옵션
  #  - 칼럼이 주어질 경우 순위를 매길 구분  
  #  - desc : 역순 정렬
  #  - ties.method=first : 동순위일 경우 먼저 나오는 순서대로
  Rank([Sales])
  Rank([Sales], "desc", [Region])
  Rank([Sales], "ties.method=first")
  

 

5) Text function

  # 문자열 내에서 주어진 문자를 찾는 함수
  Find("el", "Hello")      # 2
  
  # 문자열에서 좌측부터 주어진 숫자만큼 글자를 반환하는 함수
  Left("Hello", 2)         # He
  
  # 문자열의 길이를 반환하는 함수
  Len("Hello")             # 5
  
  # 문자열의 특정 위치만 잘라내는 함수
  Mid("Hello", 2, 3)       # ell
  
  # 문자열에서 우측부터 주어진 숫자만큼 글자를 반환하는 함수
  Right("Hello", 2)					# lo
  
  # 문자열에서 첫번째 문자열를 찾아서 두번째 문자열로 대체
  Substitute("Test","t","ting")     # Testing
  
  # 주어진 칼럼에서 반복되는 문자를 제외한 전체 문자조합을 반환
  # 예를 들어 6개의 행을 가지는 Column 안에 A,B,A,A,B,B,C 가 있으면 A,B,C 를 반환
  UniqueConcatenate([Column])

 

6) Over function

   # Over 함수는 앞에 오는 Aggregation에 대한 기준을 제시하는 함수
   # 
   # All : 주어진 Column의 값 별로 Aggregation 함수를 실행함
   [매출] / Sum([매출]) OVER (All([년도]))			# 년도별 매출 합산을 계산한 후 비중을 계산
   
   # AllNext : 주어진 Column의 순서대로 이후 모든 값에 대해 Aggregation 함수를 실행함
   Sum([매출]) OVER (AllNext([년월(date)]))  
   
   # AllPrevious : 주어진 Column의 순서대로 이전 모든 값에 대해 Aggregation 함수를 실행함
   Sum([매출]) OVER (AllPrevious([년월(date)])) 
   
   # LastPeriods : 주어진 Column의 순서대로 지정한 숫자만큼에 대해 Aggregation 함수를 실행함
   Sum([매출]) OVER (LastPeriods(3, [년월(date)]))/3
   
   # PreviousPeriod : 주어진 Column의 순서대로 바로 앞의 값을 가져옴
   Sum([매출]) OVER (PreviousPeriod([년월(date)])) 

 

아래의 이미지는 위의 Over 함수에 대한 예시 결과입니다.

 

 

Over 함수는 Spotfire 상에 사용하는 함수로 다양한 형태의 집계 함수를 활용할 때 잘 사용됩니다. Data Table에서 새로운 칼럼을 만들 때와 실제 차트에서 사용할 때 약간 다르게 사용합니다. 다음 장에서는 차트에서 사용하는 방법과 예시를 보여드리겠습니다.

 

 

 

댓글