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에서 새로운 칼럼을 만들 때와 실제 차트에서 사용할 때 약간 다르게 사용합니다. 다음 장에서는 차트에서 사용하는 방법과 예시를 보여드리겠습니다.
'Data Analysis > Spotfire' 카테고리의 다른 글
[TIBCO Spotfire] Insert Columns and Rows (2) | 2019.08.02 |
---|---|
[TIBCO Spotfire] Calculated Column(2/2) : Chart에서 활용 (10) | 2019.07.23 |
[TIBCO Spotfire] Data Handling (0) | 2019.07.16 |
[TIBCO Spotfire] Map Chart (7) | 2019.06.25 |
[TIBCO Spotfire] Tree Map (0) | 2019.06.20 |
댓글