VTL이란?
VTL(Variable Transform Language)은 오픈서베이가 변수 생성 작업을 처리하기 위해 활용하는 언어 체계입니다.
이러한 VTL에는 사용할 수 있는 값, 연산자, 조건 구문이 존재합니다.
값: 숫자, 알파벳 문자, 변수 이름, 순위 선택형 변수 응답 등 VTL에서 작성할 수 있는 값을 말합니다.
연산자: 숫자형, 평가형, NPS 등 변수는 덧셈·뺄셈 등 산술 연산자와 합계 등 함수를 이용해서 새로운 변수를 생성할 수 있습니다. 이에 다양한 연산자를 사용해서 VTL 을 입력할 수 있습니다.
조건 구문: 생성하고자 하는 변수에 따라 사용할 수 있는 조건 구문입니다. 조건이 하나일 때는 IF 구문을, 조건이 여러 개일 때는 CASE 구문을 사용합니다.. 조건이 하나일 때는 IF 구문을, 조건이 여러 개일 때는 CASE 구문을 사용합니다.
VTL 구성 요소 알아보기
VTL은 값, 연산자, 조건식으로 구성됩니다. 각 구성 요소를 활용해서 새로운 변수를 생성하기 위한 VTL을 작성할 수 있습니다.
값
숫자, 알파벳 문자, 변수 이름, 순위형 변수 응답 등 VTL에서 작성할 수 있는 값을 말합니다.
① 숫자 및 값
숫자 | 예시 | 참고사항 |
정수 | 1,-1,0 |
|
소수점 | 1.23, -1.23 |
|
숫자 리스트 | [1, 2, 3, 4, 5] [1, 2, 3, 4, 5, ...]
|
|
② 문자
문자 | 예시 | 참고사항 |
문자열 | ‘abc’, ‘def’ |
|
③ 변수
변수 | 예시 | 참고사항 |
변수명 | Q1번 문항 선택 ‘vQ1’ |
|
④ 객관식 순위형 변수 순위 선택
변수 | 예시 |
순위 선택형 변수 선택
|
|
연산자
숫자형, 평가형, NPS 등 변수는 덧셈·뺄셈 등 산술 연산자와 합계 등 함수를 이용해서 새로운 변수를 생성할 수 있습니다. 이에 다양한 연산자를 사용해서 VTL 을 입력할 수 있습니다.
유형 | 연산자 | 예시 |
산술 | 덧셈 (+) |
|
산술 | 뺄셈 (-) |
|
산술 | 곱셈 (*) |
|
산술 | 나눗셈 (/) |
|
산술 | 나머지 (%) |
|
산술 | 지수 연산 (^) |
|
함수 | sum |
|
함수 | min |
|
함수 | max |
|
함수 | mean |
|
함수 | count |
|
함수 | ifmissing |
|
조건 구문
생성하고자 하는 변수에 따라 사용할 수 있는 조건 구문입니다. 조건이 하나일 때는 IF 구문을, 조건이 여러 개일 때는 CASE 구문을 사용합니다. 이러한 조건문에는 연산자 파트에서 소개한 산술 연산자와 함수를 그대로 이용할 수 있습니다.
① IF 구문
IF 구문은 하나의 조건으로 변수를 생성할 때 사용하는 조건 구문입니다. 이러한 IF 구문은 조건을 정의하고 해당 조건이 충족될 때 결과를 반환하거나 조건이 충족되지 않으면 다른 결과를 반환합니다.
IF 구문은 아래와 같이 구성됩니다.
condition: 평가 조건입니다.
true_result: condition이 참인 경우 반환하는 결과입니다.
false_result: condition이 거짓인 경우 반환하는 결과입니다.
IF (condition, true_result, false_result) |
IF 구문은 아래와 같은 방식으로 사용할 수 있습니다.
예시 상황 | VTL 문법 |
1) Q1 응답값이 10보다 큰 경우 3번 값으로 묶을때 사용 2) Q1 응답값이 10이고 Q2 응답값이 10인 경우 1번 값으로 묶고, 그렇지 않은 경우는 2번 값으로 묶을때 사용 | 1) if(v’Q1’ > 10, 3) |
② CASE 구문
CASE 구문은 여러 여러 조건으로 변수를 조합해서 생성할 때 사용하는 조건 구문입니다. 이러한 CASE 구문은 구문 내 연속된 when 절을 평가해서 조건이 참인 결과를 모두 반환합니다. 나머지 when 절 결과는 평가되지 않으며, 모든 when 조건이 거짓이라면 미응답으로 처리됩니다..
CASE 구문은 아래와 같이 구성됩니다.
case: case 키워드로 시작합니다
when: 평가 조건입니다. 1개의 case 구문에 when 절이 여러 번 포함될 수 있습니다.
then: when 절의 조건이 참인 경우 반환하는 결과입니다. 1개의 then 절은 1개의 when 절에 대응하는 방식으로 사용됩니다.
end: end 키워드로 끝납니다.
CASE 구문은 아래와 같은 방식으로 사용할 수 있습니다.
예시 상황 | VTL 문법 |
Q1에서 1번 값은 1번 값으로 묶고, 2~4번 값은 2번 값으로 묶고, 5~9번 값은 3번 값으로 묶고10~99번 값은 4번 값으로 묶을때 사용 | case when v'Q1'==1 then 1 when v'Q1' in [2,3,4] then 2 when v'Q1' between [5,9] then 3 end |
Q1에서 1번 값을 선택하고, Q2에서 2번 값을 선택한 경우 1번 값으로 묶고,Q1에서 1번 값보다 큰 값을 선택하고 Q2에서 1번 값보다 큰 값을 선택한 경우 2번 값으로 묶고,Q1에서 1번 값을 선택했거나 Q2에서 1번 값을 선택했을 경우 3번 값로 묶을때 사용 | case when v'Q1'==1 and v'Q2'==1 then 1 when v'Q1' > 1 and v'Q2' > 1 then 2 when v'Q1'==1 or v'Q2'==1 then 3 end |