case()
case() 함수는 조건-값 쌍을 순서대로 평가하여 처음으로 참이 되는 조건에 대응하는 값을 반환합니다. 어떤 조건도 참이 아닌 경우 선택적으로 지정한 기본값을 반환합니다.
문법
case(COND1, VAL1[, COND2, VAL2, ...[, DEFAULT]])
매개변수
COND1,COND2, ...- 순서대로 평가할 조건 표현식입니다. 불리언
true이거나 null이 아닌 값으로 평가되면 참으로 간주합니다. VAL1,VAL2, ...- 각 조건이 참일 때 반환할 값 표현식입니다. 대응하는 조건과 쌍을 이룹니다.
DEFAULT- (선택) 모든 조건이 거짓일 때 반환할 기본값입니다. 인수의 총 개수가 홀수인 경우 마지막 인수가 기본값으로 사용됩니다.
설명
case() 함수는 COND1, COND2, ... 순으로 조건을 평가합니다. 조건이 불리언 true이거나 불리언이 아닌 null이 아닌 값이면 참으로 판정하고, 해당 조건에 대응하는 값을 즉시 반환합니다. 이후 조건은 평가하지 않습니다.
어떤 조건도 참이 되지 않은 경우, 기본값(DEFAULT)이 지정되어 있으면 기본값을 반환하고, 기본값이 없으면 null을 반환합니다.
조건 결과가 불리언 false이거나 null이면 다음 조건으로 넘어갑니다.
반환 타입은 실제로 평가된 값 표현식의 타입에 따라 결정됩니다. 값 표현식들의 타입이 서로 다르면 자동으로 상위 타입으로 승격됩니다(예: 정수와 실수가 혼합되면 실수로 반환).
오류 코드
해당 사항 없음
사용 예
이 사용 예에서 조회하는 WEB_APACHE_SAMPLE 테이블을 준비하려면 쿼리 실습용 데이터를 참고하세요.
-
HTTP 상태 코드 범위에 따른 레이블 분류
table limit=5 WEB_APACHE_SAMPLE | eval label = case(status >= 500, "서버 오류", status >= 400, "클라이언트 오류", status >= 300, "리다이렉트", "정상") | fields status, label | # status 값에 따라 label이 결정됩니다. -
HTTP 메서드에 따른 분류
table limit=5 WEB_APACHE_SAMPLE | eval type = case(method == "GET", "조회", method == "POST", "제출", method == "OPTIONS", "사전 확인", "기타") | fields method, type -
어떤 조건도 참이 아니고 기본값도 없는 경우
json "{'val': 0}" | eval result = case(val == 1, "일", val == 2, "이") | # result: null -
NULL 입력 — 조건 평가 시 null은 거짓으로 처리되어 기본값 반환
json "{'val': null}" | eval result = case(val == 1, "일", "기본값") | # result: 기본값
호환성
case() 함수는 소나 4.0 이전 버전부터 제공되었습니다.