VTL이란?
VTL(Variable Transform Language) 오픈서베이가 변수 조합 작업을 처리하기 위해 활용하는 언어 체계입니다.
이러한 VTL에는 사용할 수 있는 값, 연산자, 조건 구문이 존재합니다.
값: 보기 번호 등에 활용하는 숫자, 알파벳 문자, 변수 이름, 순위형 변수 응답 등 VTL에서 작성할 수 있는 값을 말합니다.
연산자: 주관식 숫자, 평가형, NPS 등 문항은 덧셈·뺄셈 등 산술 연산자와 합계 등 함수를 이용해서 새로운 변수를 생성할 수 있습니다. 이에 다양한 연산자를 사용해서 VTL 을 입력할 수 있습니다.
조건 구문: 생성하고자 하는 변수에 따라 사용할 수 있는 조건 구문입니다. 조건이 하나일 때는 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 |